gcc预处理注释后会留下空白

本文是《C和指针》的2.7中的第5题的gcc解


题目:下面这条语句的结果是什么?

      int x/*comment*/y;


首先,创建一个包含此语句的C文件,如:

#include <stdio.h>

int main(){
        int x/*comment*/y;
        
        xy = 0;
        printf("xy =%d\n", xy); 
                
}

其次,使用gcc -E tmp.c来查看预处理后的文件

出来的结果很长,前面有很大一段代码,我们直接看最后那部分,如下所示:

int main(){
 int x y;

 xy = 0;
 printf("xy =%d\n", xy);

}


看来,gcc的预处理器将注释用空白替换。我想之所以这样做是因为人们将注释看作x与y的分隔声明的可能性更大。

原文地址:https://www.cnblogs.com/jubincn/p/3381230.html