通常,如果我制作一个小代码片段,我通常会将其放入whathever.c 文件中。在 C 文件中,我包含了一个 .h 文件以及其他包含文件或一些全局变量。
我刚刚听说编译器可以使 header 中的代码更快,或者如果有人可以解释或评论这一点,我会很高兴。
header 中而不是 c 文件中的示例代码(可能位于 c 中)->
#define PWM_INTERRUPT \
void InterruptHook(void) \
{ \
PR4 ^= _SoftPWM_Toggle; \
\
PIR3bits.TMR4IF = 0; \
\
_asm \
INCF PR4,0,ACCESS \
CPFSLT TMR4,ACCESS \
_endasm \
\
/* if(TMR4 > PR4) */ \
PIR3bits.TMR4IF = 1; \
\
SOFT_PWM_PIN ^= 1; \
\
_asm \
RETFIE 1 \
_endasm \
}
最佳答案
不能将宏放在单独的 .c 文件中,因为宏由预处理器处理,这是编译过程的第一步,而单独的 .c 文件是在链接阶段处理的,这是编译过程的第一步。最后一步。
使用宏代替函数可能更快,因为它避免了函数调用的开销。但是,它会减慢编译速度,因为它会多次编译相同的代码。由于冗余副本,它会使您的代码变得更大。如果缓存是一个问题,它实际上可能会运行得更慢,因为会反复将不同的冗余副本提取到缓存中。如果不进行分析,就无法确定。
如果您谈论将宏放入同一个 .c 文件和头文件中的区别,那么性能方面没有区别。您只需将其复制并粘贴到使用它的每个 .c 文件中即可。
关于c - 为什么要把代码放在标题中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8733780/