Имеет ли значение порядок включаемых файлов при выполнении pclint?

Я нахожу некоторые проблемы в том порядке, в котором заголовки включения определены в файлах c / c ++, когда я выполняю pclint.

Скажите, что включает в себя порядок,

#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 <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 для C / C ++ (NT) Vers. 8.00w.

я отметил путь включения, как, скажем, + libdir (D: \ timesys \ азота6x \ toolchain \ include)

Благодарю вас
Brijesh

2

Решение

Предположительно, включение заголовочных файлов имеет небольшое значение, хотя такой случай встречается редко. Некоторые включаемые файлы используют типы, перечисления или что-то еще, что определено только в другом включаемом файле.

Например, в Linux некоторые функции требуют включения нескольких заголовков. Некоторые из программ, использующих их, потерпят неудачу, если вы включите эти заголовки в неправильном порядке.
Вроде как последний этап связывания. Вы должны установить библиотеки в правильном порядке, иначе вы можете получить неразрешенные зависимости.

Если я найду пример, я опубликую его здесь.

РЕДАКТИРОВАТЬ:
Нашел пример. Qt. У Qt самый нелепо сложный набор заголовков. Если вы включите, например, opengl.h перед QtOpenGL.h, это даст вам ошибку компиляции, потому что внутри заголовков Qt он проверяет наличие opengl. По какой-то причине QtOpenGL.h должен стоять первым.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]