Сторонняя библиотека жалуется на то, что MAXPATHLEN не объявлен в одном проекте, но не в другом проекте

ОС: 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 может его найти, и, щелкнув «следовать под символом», я обнаружил, что он объявлен в param.h в каталоге sys.

Я не могу сделать то же самое в другом моем проекте. При нажатии на ion.h MAXPATHLEN отображается черным цветом и не может найти param.h, когда я нажимаю "следовать под символом".

Я сравнил, и мои файлы .pro одинаковы в обоих проектах. Может, кто-нибудь, пожалуйста, объяснит мне, что я делаю неправильно. Спасибо


person samprat    schedule 15.12.2015    source источник


Ответы (1)


MAXPATHLEN объявлен в <sys/param.h>. Один проект должен включать его (или другой файл заголовка, включая его ... например, <QDir>, трудно сказать), а другой - нет.

Просто включите <sys/param.h>, прежде чем включать ion.h себя, чтобы решить проблему.

Если вы действительно хотите выяснить, кто включает этот файл, а затем определить, почему MAXPATHLEN определен в одном проекте, для этого есть параметры компилятора (например, /showIncludes для g ++).

person jpo38    schedule 15.12.2015
comment
Спасибо jpo38. Я включил ‹sys / param.h›, и это решило проблему. Возможно, в проекте, где он работает нормально, эта библиотека уже включена какой-то другой библиотекой. - person samprat; 15.12.2015