背景:
#ifdef FEATURE_ONE
#include <stdlib.h>
#endif
int main(int argc, char *argv[])
{
#ifdef FEATURE_ONE
system("do something");
#endif
#ifdef FEATURE_TWO
system("do something");
#endif
return 0;
}
当有一天关掉FEATURE_ONE,打开FEATURE_TWO时系统出现编译错误。
直接原因是找不到system函数;
间接原因是system函数是在stdlib.h中声明的,而stdlib.h却被FEATURE_ONE 包起来了。
如何解决问题?
system函数是库函数,不依赖于具体的FEATURE_ONE或者FEATURE_TWO;
所以在inlcude stdlib.h这个头文件时不应该被FEATURE_ONE包起来。
注:
千万不要以为这是小问题。
正是因为一个一个的小问题的存在,所以才浪费掉大量的时间。
能够做好的事,就尽量做得更好一点。
原文:http://blog.csdn.net/boyxulin1986/article/details/20775031