预处理 宏定义

来源:互联网 发布:js设置div的margin 编辑:程序博客网 时间:2024/05/29 17:24
(1)预处理是C语言的一部分吗?
(2)包含“#”的都是预处理吗?   #后是指令关键字,在关键字和#之间允许存在任意个数的空白字符。整行语句构成一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换,预处理指令是以#的代码行,又称伪指令。
(3)预处理指令后都不需要加“:”吗?
 在现学的C语言中预处理指令总共有12种。


   #define :宏定义 。

1 宏名一般用大写。

2 使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如,数组大小常用宏定义。

3 预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。

4 宏定义末尾不加分号。

5 宏定义写在函数的花括号外面,作用域为其后的程序,通常在文件的最开头。

6 可以用#undef命令终止宏的作用域。

7 宏定义允许嵌套。

8 字符串(“ ”)中永远不包含宏。

9 宏定义不分配内存,变量定义分配内存。

10 宏定义不存在类型问题,它的参数也是无类型的。

             

   #undef: 撤销已定义的宏名

   #include:使编译程序将另一源文件嵌入到带有#include的源文件中

   #if   #else  #elif  #endif  :#if 的一般含义是如果#if 后面的常量表达式为真,则编译它与#endif之间的代码,否则跳过这些代码。命令#endif标识一个#if 块的结束。#else命令的功能有点像C语言中的else ,#else 建立另一选择(当#if失败时)

   #ifdef  #ifndef  :分别表示“如果有定义”,“如果无定义”,是条件编译的另一种方法。

   #line :改变当前行数和文件名称,它们是在编译程序中预先定义的标识符命令的基本形式——#line number【“filename”】。

   #error :编译程序时,只要遇到#error 就会生成一个编译错误提示消息,并停止编译。

   #pragma :为实现时定义的命令,它允许向编译程序传送各种指令例如,编译程序可能有一种选择,它支持对程序执行的跟踪。可用#pragma 语句指定一个跟踪选择。


  

   
原创粉丝点击