Моя программа содержит два заголовка для внешних библиотек: nifti_io.h
и CImg.h
(загружено из здесь и здесь соответственно).Компилятор (GCC 8.2.0 внутри Code :: Blocks) возвратил эти странные ошибки в /usr/include/dirent.h
- сообщения сборки в IDE:
g++ -Wall -fexceptions -O2 -c /tmp/image_test.cpp -o tmp/obj/Release/image_test.o
g++ -o bin/Release/image_test obj/Release/image_test.o -s ../z/libz.so ../znz/bin/Release/libznz.so ../nifti/bin/Release/libnifti.so
In file included from /usr/include/nifti/nifti1_io.h:18,
from /tmp/image_test.cpp:4:
/usr/include/dirent.h:99:5: error: expected identifier before numeric constant
DT_UNKNOWN = 0,
^~~~~~~~~~
/usr/include/dirent.h:99:5: error: expected ‘}’ before numeric constant
In file included from /tmp/CImg.h:173,
from /tmp/image_test.cpp:7:
/usr/include/dirent.h:98:3: note: to match this ‘{’
{
^
In file included from /usr/include/nifti/nifti1_io.h:18,
from /tmp/image_test.cpp:4:
/usr/include/dirent.h:99:5: error: expected unqualified-id before numeric constant
DT_UNKNOWN = 0,
^~~~~~~~~~
In file included from /usr/include/features.h:424,
from /usr/include/x86_64-linux-gnu/bits/libc-header-start.h:33,
from /usr/include/stdio.h:27,
from /usr/include/nifti/nifti1_io.h:9,
from /tmp/image_test.cpp:4:
/usr/include/dirent.h:402:1: error: expected declaration before ‘}’ token
__END_DECLS
^~~~~~~~~~~
Process terminated with status 1 (0 minute(s), 0 second(s))
4 error(s), 0 warning(s) (0 minute(s), 0 second(s))
После буквального комментирования всего (все, что делает программа послевключая эти библиотеки int main() { return (0); }
) ошибка все еще остается.
#include "nifti/nifti1_io.h"
#include "CImg.h"
int main() { return ( 0 ); }
Включая только одну из них (nifti1_io.h
или CImg.h
), компилирующуюся без ошибок или предупреждений.Включение обоих из них возвращает вывод выше.
У кого-нибудь есть подсказка, что вызывает это и как его решить?Я предполагаю, что это как-то связано с директивами компилятора, особенно с директивой extern "C"
.Я хотел бы сохранить включенные заголовочные файлы без изменений, потому что они не мои.