У меня есть исходное дерево для программы, над которой я работаю, написанной в смешанном коде C/C++. В целях отладки я хотел бы иметь возможность запускать инструмент командной строки, например unifdef
, для всего дерева (рекурсивно), чтобы удалить определенный набор макросов #ifdef/#endif
из всех исходных файлов.
Мне было интересно, есть ли какой-то конкретный способ сделать это эффективным способом. Любая помощь будет оценена, спасибо.
find
с параметром-exec
, чтобы выполнить команду для всех файлов в исходном дереве. - person Barmar   schedule 07.05.2017#ifdef
будет скомпилирован, если символ определен. Почему вы не можете просто определить (или отменить определение) символ из скрипта makefile/build? - person kebs   schedule 07.05.2017static const int i = 10; static int a[i] = { 0 };
. Вы также хотите узнать о искажении имен. Как вы думаете, почему нужно использоватьextern "C"
в C++ для объявлений функций C? Достаточно хорошо выучить оба языка. Похоже, вы не поняли, что я написал: если вы используете стиль кодирования C в C++, это не делает вашу программу C-совместимой! - person too honest for this site   schedule 07.05.2017extern "C"
в C++, заключается в искажении символов, оба по-прежнему компилируются в сборку практически одинаковым образом. - person beeselmane   schedule 07.05.2017#ifdef
и соответствующий оператор#endif
, чтобы код между директивами теперь компилировался безоговорочно. Как вы собираетесь относиться к#else
и#ifndef
? - person M Oehm   schedule 07.05.2017#ifdef
блоков на основе определенных/не определенных значений?. - person Jonathan Leffler   schedule 08.05.2017