gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:25:11 24 4
gpt4 key购买 nike

当我执行 pclint 时,我发现包含 header 在 c/c++ 文件中定义的顺序存在问题。

假设包含顺序是 ,

#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>

我可以看到许多错误都消失了。我无法弄清楚为什么会出现这种行为。我正在为 C/C++ (NT) 版本使用 PC-lint。 8.00w。

我已经将包含路径标记为 +libdir(D:\timesys\nitrogen6x\toolchain\include)

谢谢布里杰什

最佳答案

据推测,头文件的包含确实有一点影响,尽管这种情况很少见。一些包含文件使用类型、枚举或仅在另一个包含文件中定义的其他内容。

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

如果我找到示例,我会在此处发布。

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

关于c++ - pclint 执行时包含文件的顺序是否重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20471542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com