Jos*_*sip 16 c static function parameter-passing
我刚刚在一些嵌入式代码中找到了这个函数定义:
float round_float_to_4(static float inputval);
Run Code Online (Sandbox Code Playgroud)
我熟悉静态的其他用途(全局变量,函数和局部变量),但这是我第一次将其视为函数参数的说明符.我假设这迫使编译器使用固定内存位置进行inputval而不是堆栈?
APr*_*mer 11
这是非标准的.我猜你也一样,对于有嵌入式目标的编译器中的这种扩展我并不感到惊讶.
那是无效的。static我知道的可以在函数参数中使用的唯一有效位置是在数组维度中
float round_float_to_4(float inputval[static 4]);
Run Code Online (Sandbox Code Playgroud)
说这inputval将在所有对该函数的调用中都指向至少提供4浮点数的内存(这是C99的补充,它不会出现在C89中)。