首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C包含防护

C包含防护
EN

Stack Overflow用户
提问于 2011-11-25 19:48:52
回答 5查看 848关注 0票数 3

file1.c第一次包含inc.h (包含include guard #ifndef INC_H)时,执行#define INC_H。但是现在,当另一个file2.c包含相同的inc.h时,宏INC_H是否已经定义,所有的都是相同的故事,以前的定义不会在这里传播?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-11-25 19:52:45

但是现在,当另一个file2.c包括相同的inc.h时,是已经定义的宏INC_H,

是和否。那得看情况。

  • 如果file2.c包括一些包含inc.h的报头,则,则已经为file2.c定义了INC_H。对于尚未定义的任何级别的inclusion.
  • Else,no,都是如此。

保护防止头部被包括在一个文件中,间接或直接,不止一次!

票数 2
EN

Stack Overflow用户

发布于 2011-11-25 19:53:29

宏定义不会在单独的编译之间保留。

票数 4
EN

Stack Overflow用户

发布于 2011-11-25 19:54:41

编译file2.c时,编译器会重新启动。在编译file2.c时,无论file1.c编译时定义了什么预处理器符号,都不起作用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8268687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档