分享

E参数在gcc上的好处

 点点阅 2017-09-13


(1)把用户定义的所有的预定义#define展开。

举个例子,如果用户有以下代码:

#define Max(a, b) ((a)>(b)?(a):(b))

...

int c = Max(a, b);

经过gcc预处理后,预定义都将展开成如下样子:

int c = ((a)>(b)?(a):(b));

 

(2)把所有的#include的文件内容加载进来。

假如我们有#include <stdio.h>,预处理后程序会用stdio.h的内容替换掉#include <stdio.h>,

最后的程序中,你将找不到<>这样的include,更多的是#include "/usr/include/stdio.h"之类的。

有了这个,你可以知道a)stdio.h在linux下的存放路径,b)FILE结构体的摸样,c)size_t类型的定义,d)其他很多你想知道的

 

(3)处理条件编译,将不符合条件的代码段删除。

例如,有代码段:

#ifdef M

  printf("M");

#else

  printf("NM");

#endif

预处理后程序将变成

 

printf("M");

 

 

(因为没有#define M,其他行位置为空,代码printf("NM")将被删除)

 


 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多