我想创建一个宏来替换所有调用printf,更具体地说mbedtls_printf(它的行为完全相同printf)没有任何东西.
我知道我可以用什么#define mbedtls_printf来代替mbedtls_printf,但这仍然会保留参数/括号完整.
编辑 - 我忘了提到这mbedtls_printf是一个替代自己的宏sgx_printf
我知道我可以使用 #define mbedtls_printf 来替换 mbedtls_printf ,但这仍然会使参数/括号保持不变。
如果保留参数列表也没关系,因为这样它将被视为表达式。如果我们有一个表达式并且我们不对它执行任何操作,那么它只会被优化(在任何像样的编译器上)。考虑以下:
int x(char a, double b)
{
return printf("%c %f\n", a, b);
}
#define x
int main(void)
{
x('P', 3.14);
}
Run Code Online (Sandbox Code Playgroud)
编译器会看到以下代码main:
('P', 3.14);
Run Code Online (Sandbox Code Playgroud)
该表达式的计算结果为 3.14(逗号运算符返回其右侧操作数)。这样的表达方式正在悄然优化。