ANSI C 预处理简单总结

来源:互联网 发布:2017编程需要排行榜 编辑:程序博客网 时间:2024/05/21 15:50

ANSI C 预处理命令解析

具体命令如下:

#define : 宏定义

#error : 强迫编译程序停止编译,并输出错误信息,主要用于程序调试

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

#if-------#elif------#else-------#endif : 预编译分支命令。与C中 if-----elseif-----else-----类似

                   根据#if或者#elif后面的常量表达式决定编译那个分支的代码

#ifdef : 如果后面的常量已经定义,则返回true,编译其后的代码

#ifndef : 如果后面的常量未定义,则返回true,编译其后的代码

#undef : 撤销已定义的宏名

#line : 改变预定义宏 _LINE_ 和 _FILE_ 的内容

#pragma : 使用该预处理命令可向编译程序传送各种指令,编译程序可设置编译期支持C99

 

分类:

文件包含命令:#include

宏定义命令:#define #undef

条件编译命令:#if #else #ifdef #ifndef #endif

其他编译命令:#line #error #pragma

 

宏定义命令:

1 无参数宏定义:

                            #define宏名 字符串

         #define PI 3.14

2 带参数宏定义:

                            #define宏名(形参表) 字符串

         #define FUN(A,B)2*A*B

3 undef的使用主要将宏名局限在仅需要的代码段

                            #undef宏名

         #undef FUN

4 操作符# 和 ## 的区别---#define顶以后使用该操作符替换—及在字符串中输出实参

a.      #define AREA(x,y) printf(“Length “#x”  Width “#y”  and the area = :%d \n”,(x)*(y));

b.      #define VAR(n) v##n                VAR(1) === v1

条件编译命令:

1 #if---#else---#endif

                   #if  常量表达式

                            程序段1

                   #else

                            程序段2

                   #endif

2 #elif

                   #if常量表达式1

                            程序段1

                   #elif常量表达式2

                            程序段2

                   #elif常量表达式n

                            程序段n

                   #else

                            程序段m

                   #endif


                   #define OS WIN

                   #if OS==WIN

                            #include“win.h”

                   #elif OS==LINUX

                            #include “linux.h”

                   #elif OS=MAC

                            #include“mac.h”

                   #endif

3 #ifdef #ifndef   对上面的改进,不再进行判断,判断是否定义符号常量

         #ifdef

                   #ifdef标识符

                            程序段1

                   #else

                            程序段2

                   #endif

 

         #ifndef与上述相反

                   #ifndef标识符

                            程序段1

                   #else

                            程序段2

                   #endif

 

 

其他预处理命令:

1 预定义宏名

__DATE__ 当前源程序的创建日期

__FILE__    当前源程序的文件名称

__LINE__   当前被编译的代码的行号

__STDC__ 饭后编译期是否支持标准C 若为1 则符合

__TIME__ 当前源程序的创建时间

 

2 重复行号和文件名命令#line

         #linenumber[“filename”]

3 修改编译期设置命令#pragama

         #pragamapara --- para是参数可使用的较多

         常用命令:

                            Message参数,在编译信息中输出窗口输出对应的信息

                                     #pragama message(消息文本)

                            Code_seg参数

                                     #pragamacode_seg( [ “ section-name” [,”section-class” ] ] )

                                                        设置程序中函数代码存放的代码段,开发驱动中用到

                            Once保证头文件被编译一次

                                     #pragama  once

4 产生错误信息命令#error

         #error错误信息

         Exp:

                            #if__STDC__ !=1

                                     #errorNot ANSI C

                            #endif

 

0 0