我有一个在多个平台上编译的项目,其中一个是Visual C ++。我注意到我们经常打破构建,因为开发人员使用errno而不包括errno.h,但因为它们在Visual Studio中工作,并且它们的源包括stddef.h,无论是直接还是间接,它都没有编译为它们。
为什么在此标题中定义了errno?什么是在我们的周期早期发现这个问题的好方法,i。即仍然在Visual Studio中?
答案 0 :(得分:2)
在我们的周期早期发现这个问题的好方法是什么?即仍然在Visual Studio中?
除非你在两个不同的平台上同时开发,否则这样的问题很难(如果不是不可能的话)。
您可以在VS项目的所有文件中搜索字符串“errno”,然后检查搜索是否也找到“errno.h”,但这仅对此特定问题有用。标准库具有许多其他可能间接可见的函数/宏。使用相同的策略确保所有函数/宏的正确头文件为#include
d是不切实际的。
对代码进行严格的开发人员和/或同行评审可能是解决问题的最佳选择。