当file1.c第一次包含inc.h (包含include guard #ifndef INC_H)时,执行#define INC_H。但是现在,当另一个file2.c包含相同的inc.h时,宏INC_H是否已经定义,所有的都是相同的故事,以前的定义不会在这里传播?
发布于 2011-11-25 19:52:45
但是现在,当另一个file2.c包括相同的inc.h时,是已经定义的宏INC_H,
是和否。那得看情况。
file2.c包括一些包含inc.h的报头,则是,则已经为file2.c定义了INC_H。对于尚未定义的任何级别的inclusion.保护防止头部被包括在一个文件中,间接或直接,不止一次!
发布于 2011-11-25 19:53:29
宏定义不会在单独的编译之间保留。
发布于 2011-11-25 19:54:41
编译file2.c时,编译器会重新启动。在编译file2.c时,无论file1.c编译时定义了什么预处理器符号,都不起作用。
https://stackoverflow.com/questions/8268687
复制相似问题