如何在一行源代码(AVR-GCC)中包含多行C代码

问题描述 投票:1回答:1

有没有一种方法可以添加一个标识符,编译器将用多行代码替换该标识符?

我阅读了宏和内联函数,但无所获。

我需要编写一个中断服务程序,而不是为了提高速度而调用任何函数。麻烦的是,在某些情况下我需要使用函数,所以目前我只在很多地方重复所有几行。

例如:

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;
}

该函数有很多页面,我需要代码才能更具可读性。

c avr-gcc
1个回答
0
投票

您可以使用inline函数,该函数将被集成到源代码中而不是真正被调用的位置(请注意,此行为取决于编译器支持和优化设置或使用-fno-inline标志功能)。 GCC documentation on inline functions

为了完整起见,另一种方式是将// do some stuff here...定义为预处理器宏,该宏将再次插入到被调用的位置;这次是通过预处理器进行的-因此没有类型安全性,更难调试和读取。通常的经验法则是不要为可以使用功能完成的事情编写宏

© www.soinside.com 2019 - 2024. All rights reserved.