常用指令的用途
#空指令,无任何效果
#include包含一个源代码文件
#define定义宏
#undef取消已定义的宏
#if如果给定条件为真,则编译下面代码
#ifdef如果宏已经定义,则编译下面代码
#ifndef如果宏没有定义,则编译下面代码
#elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码
#endif结束一个#if……#else条件编译块
#error停止编译并显示错误信息
#define指令
#define预处理指令是用来定义宏的。该指令最简单的格式是:首先神明一个标识符,然后给出这个标识符代表的代码。在后面的源代码中,就用这些代码来替代该标识符
#defineMAX_NUM10
intarray[MAX_NUM];
for(i=0;i<MAX_NUM;i++)/*……*/
2.带参数的#define指令
#defineCube(x)(x)*(x)*(x)
intnum=8+2;
volume=Cube(num);
展开后为(8+2)*(8+2)*(8+2);
#运算符
出现在宏定义中的#运算符把跟在其后的参数转换成一个字符串。
#definePASTE(n)"adhfkj"#n
int main()
{
printf("%s",PASTE(15));
}
##运算符
##运算符用于把参数连接到一起。预处理程序把出现在##两侧的参数合并成一个符号.
##运算符用于把参数连接到一起。预处理程序把出现在##两侧的参数合并成一个符号.
#define NUM(a,b,c)a##b##c
#define STR(a,b,c)a##b##c
int main()
{
printf("%d",NUM(1,2,3));
printf("%s",STR("aa","bb","cc"));
}
#if 指令如果给定条件为真,则编译下面代码 #endif指令用于终止#if预处理指令。
#define DEBUG 0
int main()
{
#if DEBUG
printf("Debugging");
#endif
printf("Running");
//getchar ();
}
#ifdef和#ifndef
#define DEBUG
int main()
{
#ifdef DEBUG
printf("yes");
#endif
#ifndef DEBUG
printf("no");
#endif
//getchar();
}
#else指令用于某个#if指令之后,当前面的#if指令的条件不为真时,就编译#else后面的代码。#endif指令将中指上面的条件块。