Разрешить сборку предупреждения - "дополнительные токены в конце директивы #include" - PullRequest
3 голосов
/ 23 ноября 2011

Я тестирую решение, которое пробовал в предыдущем вопросе: Использование typedef в структуре для именования и индексации текстовых команд

Тем не менее, я бы хотел, чтобы предупреждения моего компилятора не использовались. Для этого я использую инструменты статического анализа кода, а в случае определенных инструментов (например, LINT) я могу вручную исключать определенные правила и предупреждения для каждой строки, используя разметку в моих комментариях.

В случае первого / верхнего ответа я попробовал это решение, но изменил окончательную структуру, чтобы она выглядела так:

struct command commands[] =
{
#include "commands.inc",
{NULL, NULL}
};

Это так, чтобы я мог знать, достиг ли я во время поиска наибольшего адресуемого члена этого массива структуры и не получил условие выхода за пределы. Проблема в том, что я знаю, что есть предупреждение компилятора: «Предупреждение: дополнительные токены в конце директивы #include». Есть ли способ отключить это предупреждение? Мне нравится это решение, и оно очень хорошо соответствует моим потребностям.



В конце концов, я обновил свой .inc файл, чтобы он был таким:

CMD(list),
CMD(quit),
CMD(start),

вместо

CMD(list),
CMD(quit),
CMD(start)

Затем я смог удалить запятые из моих определений макросов и из кода статической инициализации.

Ответы [ 2 ]

13 голосов
/ 23 ноября 2011

Вы должны удалить запятую в конце вашей директивы #include. Там не должно быть.

1 голос
/ 23 ноября 2011

Наверное, расстроен из-за запятой. Попробуйте:

struct command commands[] =
{
#include "commands.inc"
, {NULL, NULL}
};
...