是否应在源代码或CPPFLAGS中指定标准?

时间:2011-01-13 14:09:46

标签: c++ c build-process compilation

#define _BSD_SOURCE或设置CPPFLAGS = -D_BSD_SOURCE更好吗?

在我看来,如果一段源代码依赖于特定的标准,最好用#define在代码本身中明确地拼出它。但是,很多评论都建议在编译行上指定标准更合适。从源代码中省略标准并仅在编译时指定它有什么好处?

1 个答案:

答案 0 :(得分:6)

如果在源中指定了定义,则存在一个风险,即相同的头文件可以包含在多个源文件(翻译单元)中但具有不同的预处理器定义,这可能导致一个定义规则违规,这通常是一个痛苦的调试。

通过为整个项目而不是单个源文件指定定义,可以最大限度地减少此类定义规则违规的可能性。

此外,如果需要添加新的定义,则只更改一个makefile,而不是所有源文件。