Отключение раскрытия определенных макросов в выходах ошибок / предупреждений - PullRequest
0 голосов
/ 23 октября 2018

У меня есть очень часто используемый, несколько сложный макрос (давайте назовем его MAC(...) ради этого вопроса), который должен быть макросом (так как он очень типовой).Макрос ведет себя синтаксически, как вызов функции, но внутренне вызывает более 10 других макросов.

Следовательно, если я сделаю ошибку при вызове MAC(), например, если я сделаю: MAC(1-) gcc / clang выгрузит менядовольно длинная трассировка стека препроцессора MAC(), в которую я вообще не вписан.

Если я определю MAC () следующим образом:

#if DEBUG_MAC
    int MAC(); //so I get a nice preprocessor stack trace
#else
    #define MAC(...) //here would come the actual definition
#endif

и затем, при обнаруженииошибка, которую я перекомпилирую с -DDEBUG_MAC, я получаю хорошую (= несуществующую) трассировку стека препроцессора, но этот подход кажется неуклюжим и работает только для диагностики серьезных ошибок, а не предупреждений.

Есть ли способ получить gcc или clangвести себя так, т. е. обрабатывать макрос как непрозрачный вызов функции в целях сообщения об ошибках, не делая такого рода объявления / перестановки макросов?

...