基本定义
#include <stdio.h>
//说明:在windows 操作系统和 linux操作系统下,生成源码不一样!!!
*
#include <windows.h>
int main() {
Sleep(5000); //毫秒
puts("hello, 尚硅谷~"); //输出
getchar();
return 0;
}
*/
#if _WIN32 //如果是windows平台, 就执行 #include <windows.h>
#include <windows.h>
#elif __linux__ //否则判断是不是linux ,如果是linux 就引入<unistd.h>
#include <unistd.h>
#endif
int main() {
//不同的平台下调用不同的函数
#if _WIN32 //识别windows平台
Sleep(5000); //毫秒
#elif __linux__ //识别linux平台
sleep(5); //秒
#endif
puts("hello, 尚硅谷~"); //输出
getchar();
return 0;
}
宏定义介绍
#include <stdio.h>
//宏定义 , 宏名 M , 对应的字符串 (n*n+3*n)
//注意:如果宏对应的字符串 有 () , 那么就不能省略
//#define M (n*n+3*n) //注意边界效应
#define M n*n+3*n
int main(){
int sum, n;
printf("k=%d", n);
printf("Input a number: ");
scanf("%d", &n); //n = 3
sum = 3*M+4*M+5*M; // 宏展开? 3*(n*n+3*n);+4*(n*n+3*n);+5*(n*n+3*n);
printf("sum=%d\n", sum);
getchar();
getchar();
return 0;
}
宏定义注意事项
带参宏定义
#include <stdio.h>
//说明
//1. MAX 就是带参数的宏
//2. (a,b) 就是形参
//3. (a>b) ? a : b是带参数的宏对应字符串,该字符串中可以使用形参
#define MAX(a,b) (a>b) ? a : b
int main(){
int x , y, max;
printf("input two numbers: ");
scanf("%d %d", &x, &y);
//说明
//1. MAX(x, y); 调用带参数宏定义
//2. 在宏替换时(预处理,由预处理器), 会进行字符串的替换,同时会使用实参, 去替换形参
//3. 即MAX(x, y) 宏替换后 (x>y) ? x : y
max = MAX(x, y);
printf("max=%d\n", max);
getchar();
getchar();
return 0;
}
带参宏定义和函数的区别
#include <stdio.h>
#include <stdlib.h>
//int SQ(int y){ //函数, 求y的平方
// return ((y)*(y));
//}
#define SQ(y) ((y)*(y))
int main(){
//int i=1;
//while(i<=5){
// printf("%d^2 = %d\n", i-1, SQ(i++)); // 第一次
//}
int i = 1;
while(i<=5){ //进入循环 3 次,得到的是 1 * 1 = 1 3 * 3 = 9 5 * 5 = 25
//分析
// SQ(i++) 宏调用 展开 ((i++)*(i++))
printf("%d^2 = %d\n", i-2, SQ(i++));
}
system("pause");
return 0;
}
C 语言预处理命令总结
宏定义 案例