修改gcc预处理器输出

修改gcc预处理器输出,c,gcc,c-preprocessor,C,Gcc,C Preprocessor,我想在每个函数的第一行添加以下代码 printf(__FUNCTION__); 如何使用预处理器执行此操作?如果不使用某些宏替换每个函数定义,则无法执行此操作。此时,您最好自己插入该代码,或者意识到这是一个可怕的想法,而不要这样做。改用调试器并逐步完成代码,这将更容易。如果您坚持这样做,您可能需要确保结尾有一个换行符,您可以使用printf(“%s\n”、\uu func\uuu)(使用C99标准符号)或put(\uuuu func\uuu)。这避免了使用特定于GCC的构造。如果是我,我会将其

我想在每个函数的第一行添加以下代码

printf(__FUNCTION__);

如何使用预处理器执行此操作?

如果不使用某些宏替换每个函数定义,则无法执行此操作。此时,您最好自己插入该代码,或者意识到这是一个可怕的想法,而不要这样做。改用调试器并逐步完成代码,这将更容易。如果您坚持这样做,您可能需要确保结尾有一个换行符,您可以使用
printf(“%s\n”、\uu func\uuu)
(使用C99标准符号)或
put(\uuuu func\uuu)
。这避免了使用特定于GCC的构造。如果是我,我会将其转换为可以根据需要打开或关闭的函数调用。请注意,预处理器无法为您执行此操作;它不知道函数边界在哪里。因此您必须自己在正确的位置编写宏。为什么是预处理器?您想要什么要实现?如果只是为了实现对函数的跟踪,并且您正在使用gcc,则它具有仪器函数的扩展。如果您正在使用gcc,则可以使用
-finstrument functions
以及地图文件查找来实现()。