当我执行pclint时,我在c / c ++文件中定义include头的顺序中发现了一些问题。
说包含顺序是,
#include <sys/timerfd.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <fcntl.h>
#include <termios.h>
#include <errno.h>
#include <stdarg.h>
#include <string.h>
当我执行pclint时,它会给出错误,例如,FILE未声明等。
后来我将include的顺序改为
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <fcntl.h>
#include <termios.h>
#include <errno.h>
#include <stdarg.h>
#include <string.h>
#include <sys/timerfd.h>
我可以看到很多错误消失了。我无法弄清楚为什么会出现这种情况。我正在使用PC-lint for C / C ++(NT)Vers。 8.00瓦特
我已将include路径标记为,+ libdir(D:\ timesys \ nitrogen6x \ toolchain \ include)
谢谢 Brijesh
答案 0 :(得分:1)
据说,包含头文件确实有点重要,尽管找到这样的场合很少见。一些包含文件使用类型,枚举或仅在另一个包含文件中定义的其他内容。
例如,在Linux上,某些功能需要包含多个标头。如果您以错误的顺序包含这些标头,则某些使用它们的程序会失败。 有点像最后的连接阶段。您必须以正确的顺序设置库,否则您可能会得到未解析的依赖项。
如果我找到一个例子,我会在这里发布。
编辑: 找到了一个例子。 Qt的。 Qt拥有最荒谬复杂的标题集。例如,如果在QtOpenGL.h之前包含opengl.h,它会给你一个编译错误,因为在Qt头文件中它检查是否包含了opengl。出于某种原因,QtOpenGL.h必须首先出现。