第三方库抱怨MAXPATHLEN没有在一个项目中声明,但在其他项目中没有声明

3rd party library complain about MAXPATHLEN not declared in one project but not on other project

本文关键字:项目 声明 一个 其他 MAXPATHLEN 第三方      更新时间:2023-10-16

操作系统:Ubuntu 14.04
SDK:Qt 5.5
库:"ion.h"[我从源代码构建了ion-dtn第三方库,它有我在两个项目中使用的ion.h文件]

我在同一个开发系统中的两个项目中使用了ion.h。这两个项目都基于Qt。在包含ion.h时,一个项目运行时没有任何编译错误,另一个则抱怨MAXPATHLEN。

/usr/local/include/ion.h:60: error: 'MAXPATHLEN' was not declared in this scope
  char pathName[MAXPATHLEN + 1];.

在运行良好的项目上,我可以点击ion.h,发现MAXPATHLEN用蓝色突出显示,这显然意味着qt可以找到它,点击"follow under symbol",我发现它在sys目录下的param.h中声明。

我不能在我的另一个项目中做同样的事情。单击离子。h MAXPATHLEN是黑色的,当我单击下面的符号时,找不到参数h。

我比较了一下,我的.pro文件在两个项目中都是一样的。你能告诉我我做错了什么吗。感谢

MAXPATHLEN<sys/param.h>中声明。一个项目必须包含它(或者包含它的另一个头文件…例如,很难判断<QDir>),而另一个项目则不包含。

只需先包含<sys/param.h>,然后再包含ion.h即可解决问题。

如果你真的想弄清楚谁包含了这个文件,然后确定为什么在一个项目中定义MAXPATHLEN,那么有编译器选项(比如g++的/showIncludes)。