预处理符号;
① _ FILE _: 表示当前源文件编译的目录;
② _ TIME _: 文件被编译的时间;
③ _ DATE _: 文件被编译的日期;
④ _ LINE _: 当前文件所在的行号;
⑤ _ STDC _: 如果此编译器遵循ANSI C,其值为一,否则未定义;
⑥ #和##
#include<stdio.h>
#include<windows.h>
int main()
{
printf("%d\n",__LINE__);
printf("%s\n",__FILE__);
printf("%s\n",__DATE__);
printf("%s\n",__TIME__);
printf("%d\n",__STDC__);
system("pause");
return 0;
}
LINUX
VS2008
扫描二维码关注公众号,回复:
2594747 查看本文章
LINUX遵循ANSI C的标准__STDC__值为1,vs则不遵循。
## 与 #
#include<stdio.h>
#include<stdlib.h>
#define STR1 "hello"
#define STR2 "world"
#define STR1STR2 "hello world"
#define c(a,b) a##b
int main()
{
printf("%s %s\n",STR1,STR2);
printf("%s\n",c(STR1,STR2));
system("pause");
return 0;
}
##:不是简单将STR1和STR2相连,而是定义STR1STR2
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include<stdio.h>
#include<stdlib.h>
#define M 123456
#define PRINT( FORMAT, VALUE ) printf("the value of "#VALUE" is " FORMAT"\n", VALUE)
int main()
{
PRINT("%d",M);
system("pause");
return 0;
}
#:将一个宏参数转换为一个字符串