#define _BSD_SOURCE或设置CPPFLAGS = -D_BSD_SOURCE更好吗?
在我看来,如果一段源代码依赖于特定的标准,最好用#define在代码本身中明确地拼出它。但是,很多评论都建议在编译行上指定标准更合适。从源代码中省略标准并仅在编译时指定它有什么好处?
答案 0 :(得分:6)
如果在源中指定了定义,则存在一个风险,即相同的头文件可以包含在多个源文件(翻译单元)中但具有不同的预处理器定义,这可能导致一个定义规则违规,这通常是一个痛苦的调试。
通过为整个项目而不是单个源文件指定定义,可以最大限度地减少此类定义规则违规的可能性。
此外,如果需要添加新的定义,则只更改一个makefile,而不是所有源文件。