宏取代了所有对printf的调用

Roy*_*son 5 c++ macros

我想创建一个宏来替换所有调用printf,更具体地说mbedtls_printf(它的行为完全相同printf)没有任何东西.

我知道我可以用什么#define mbedtls_printf来代替mbedtls_printf,但这仍然会保留参数/括号完整.

编辑 - 我忘了提到这mbedtls_printf是一个替代自己的宏sgx_printf

Edw*_*rak 1

我知道我可以使用 #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(逗号运算符返回其右侧操作数)。这样的表达方式正在悄然优化。