pclint执行时包含文件的顺序是否重要?

时间:2013-12-09 13:12:32

标签: c++ c pc-lint

当我执行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

1 个答案:

答案 0 :(得分:1)

据说,包含头文件确实有点重要,尽管找到这样的场合很少见。一些包含文件使用类型,枚举或仅在另一个包含文件中定义的其他内容。

例如,在Linux上,某些功能需要包含多个标头。如果您以错误的顺序包含这些标头,则某些使用它们的程序会失败。 有点像最后的连接阶段。您必须以正确的顺序设置库,否则您可能会得到未解析的依赖项。

如果我找到一个例子,我会在这里发布。

编辑: 找到了一个例子。 Qt的。 Qt拥有最荒谬复杂的标题集。例如,如果在QtOpenGL.h之前包含opengl.h,它会给你一个编译错误,因为在Qt头文件中它检查是否包含了opengl。出于某种原因,QtOpenGL.h必须首先出现。