Я тестирую решение, которое пробовал в предыдущем вопросе: Использование typedef в структуре для именования и индексации текстовых команд
Тем не менее, я бы хотел, чтобы предупреждения моего компилятора не использовались. Для этого я использую инструменты статического анализа кода, а в случае определенных инструментов (например, LINT) я могу вручную исключать определенные правила и предупреждения для каждой строки, используя разметку в моих комментариях.
В случае первого / верхнего ответа я попробовал это решение, но изменил окончательную структуру, чтобы она выглядела так:
struct command commands[] =
{
#include "commands.inc",
{NULL, NULL}
};
Это так, чтобы я мог знать, достиг ли я во время поиска наибольшего адресуемого члена этого массива структуры и не получил условие выхода за пределы. Проблема в том, что я знаю, что есть предупреждение компилятора: «Предупреждение: дополнительные токены в конце директивы #include». Есть ли способ отключить это предупреждение? Мне нравится это решение, и оно очень хорошо соответствует моим потребностям.
В конце концов, я обновил свой .inc файл, чтобы он был таким:
CMD(list),
CMD(quit),
CMD(start),
вместо
CMD(list),
CMD(quit),
CMD(start)
Затем я смог удалить запятые из моих определений макросов и из кода статической инициализации.