NULL指针参数有多贵?

fal*_*lro 7 c c++ embedded performance avr-gcc

在用C(++)(AVR-Gcc)实现嵌入式系统上的菜单时,我最终得到了带参数的void函数指针,并且通常使用它们.

// void function prototype
void (*auxFunc)(char *);
Run Code Online (Sandbox Code Playgroud)

在某些情况下(事实上很多),函数实际上不需要参数,所以我会做类似的事情:

if (something)    doAuxFunc(NULL);
Run Code Online (Sandbox Code Playgroud)

我知道我可以重载到不同的函数类型,但我实际上是在尝试不执行此操作,因为我实例化了多个对象并希望保持它们的亮度.

使用NULL指针调用多个函数(当它们用于实际指针时)比实现更多函数原型更糟糕吗?

小智 9

即使在微控制器上检查NULL也是一个非常小的开销 - 与0的比较应该是快速的.如果你使多个函数超载,你就会将可读性(十分轻微)的性能提升到十字架上.只是让GCC的优化器做它的东西,它相当不错:)