【发布时间】:2011-06-08 12:47:02
【问题描述】:
#define _BSD_SOURCE 还是设置 CPPFLAGS=-D_BSD_SOURCE 更好?
在我看来,如果一段源代码依赖于特定的标准,最好在代码本身中用#define 明确说明它。但是,很多评论建议在编译行指定标准更合适。从源代码中省略标准,只在编译时指定有什么好处?
【问题讨论】:
标签: c++ c build-process compilation
#define _BSD_SOURCE 还是设置 CPPFLAGS=-D_BSD_SOURCE 更好?
在我看来,如果一段源代码依赖于特定的标准,最好在代码本身中用#define 明确说明它。但是,很多评论建议在编译行指定标准更合适。从源代码中省略标准,只在编译时指定有什么好处?
【问题讨论】:
标签: c++ c build-process compilation
如果您在源代码中指定定义,则存在相同的头文件可能包含在多个源文件(翻译单元)中但具有不同预处理器定义的风险,这可能导致违反一个定义规则,这通常是一种痛苦调试。
通过为整个项目而不是在单个源文件中指定定义,可以最大限度地减少违反单一定义规则的可能性。
此外,如果需要添加新定义,您只需更改一个 makefile,而不是所有源文件。
【讨论】: