Добавьте несколько строк в начале каждой главной функции C - PullRequest
1 голос
/ 08 марта 2019

У меня есть проект, в котором много файлов содержат основную функцию, и я хочу добавить некоторый код инициализации в начале каждой основной функции без каких-либо изменений непосредственно в исходных файлах.Может быть через какую-то функцию-обертку?Я не уверен, как это реализовать.Спасибо за любую помощь.

Ответы [ 2 ]

3 голосов
/ 08 марта 2019

Если вы компилируете с помощью gcc, вы можете посмотреть эту ссылку, может быть?

Примером может быть:

void runBeforeMain(void) __attribute__ ((constructor)); 

объявление в заголовочном файле, который вы включаете, и т.д ...

Определение функции может идти после.

В качестве второго варианта вы можете посмотреть make-файлы.

0 голосов
/ 08 марта 2019

Если вы не используете слово main для какой-либо другой переменной и т. Д., Тогда вы, вероятно, можете сделать

#define main(...) main(int argc, char** argv){\
/****    initialization stuff.   ****/\
/*get rid of the "{" in your original line*/ //

Вы можете поместить его в свой общий заголовочный файл, и, если этот файл существует, вы, вероятно, уже включили его во все остальные исходные файлы. Если нет, вы можете добавить флаг -include xxx.h в ваш скрипт сборки (не уверен, что он очень переносимый, по крайней мере, он работает для gcc и clang).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...