C-预处理

来源:互联网 发布:快递行业数据 编辑:程序博客网 时间:2024/06/02 02:31

预处理命令

程序设计语言的预处理的概念:在编译之前进行的处理。 C语言的预处理主要有三个方面的内容: 1.宏定义; 2.文件包含; 3.条件编译。预处理命令以符号“#”开头。

pragma

     #Pragma的作用是设定编译器的状态或者是指示编译器完成一些特定的动作,其格式一般为: # pragma Para

         #Pragma message(“消息文本”),当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来

         #Pragma once,只要在头文件的最开始加入这条指令就能够保证头文件被编译一次

         #pragma warning(disable:4507 34) //不显示450734号警告信息

         #pragma warning(once:4385)       // 4385号警告信息仅报告一次

         #pragma warning(error:164)       //164号警告信息作为一个错误

#define

带参数定义    #define  Cube(x)  (x)*(x)*(x)

    带参数的宏和函数调用看起来有些相似,可以时任何数字表达式甚至函数调用来代替参数x。宏展开后完全包含在一对括号中,而且参数也包含在括号中,这样就保证了宏和参数的完整性。

#运算符,出现在宏定义中的#运算符把跟在其后的参数转换成一个字符串:

       #define     PASTE(n)     "adhfkj"#n

       main(){printf("%s/n", PASTE(15));}               == adhfkj15

       宏定义中的#运算符告诉预处理程序,把源代码中任何传递给该宏的参数转换成一个字符串。

#error 

    停止编译并显示错误信息,当预处理器预处理到#error命令时将停止编译并输出用户自定义的错误消息。

#if (OS_TASKCNT == 0)

#error "Invalid number of concurrent running threads!"

#endif

条件预编译:#ifdef#ifndef#elif#endif

很巧的应用例子:

#ifdef  OS_GLOBALS

#define OS_EXT     //定义生效,则这个OS_EXT就是个无效的类型

#else

#define OS_EXT extern   //没有定义变量OS_GLOBALS ,OS_EXT就等效于extern类型

#endif


原创粉丝点击