有没有一种方法可以添加一个标识符,编译器将用多行代码替换该标识符?
我阅读了宏和内联函数,但无所获。
我需要编写一个中断服务程序,而不是为了提高速度而调用任何函数。麻烦的是,在某些情况下我需要使用函数,所以目前我只在很多地方重复所有几行。
例如:
void ISR()
{
int a = 1;
int b = 2;
int c = 3;
// do some stuff here ...
int a = 1;
int b = 2;
int c = 3;
// do more stuff here ...
int a = 1;
int b = 2;
int c = 3;
}
该函数有很多页面,我需要代码才能更具可读性。
您可以使用inline
函数,该函数将被集成到源代码中而不是真正被调用的位置(请注意,此行为取决于编译器支持和优化设置或使用-fno-inline
标志功能)。 GCC documentation on inline functions。
为了完整起见,另一种方式是将// do some stuff here...
定义为预处理器宏,该宏将再次插入到被调用的位置;这次是通过预处理器进行的-因此没有类型安全性,更难调试和读取。通常的经验法则是不要为可以使用功能完成的事情编写宏。