gpt4 book ai didi

c - 实现格式化打印,在没有参数时可以不做任何事情

转载 作者:太空狗 更新时间:2023-10-29 15:37:23 26 4
gpt4 key购买 nike

我想实现一个名为 PRINT 的宏,它获取零个或多个参数,并执行以下操作:

  1. 如果它获得零参数 - 什么也不做。
  2. 如果它得到一个或多个参数——就像 printf 一样。

正如您在下面的代码中看到的那样,我成功地实现了它,但代价是在我们得到零参数的情况下使用空字符串调用 printf。

有没有一种方法可以在不调用 printf 的情况下处理零参数情况(当你只想什么都不做时打印一些东西效率不高)?

#include <stdio.h>

#define PRINT(...) printf("" __VA_ARGS__);

int main(){
PRINT();
PRINT("print\n");
PRINT("print number: %d\n", 7);
return 0;
}

输出:

print
print number: 7

最佳答案

在传递空格式字符串的情况下,gcc 和 clang 将完全消除对 printf 的调用。可能这种优化相当普遍。

参见 herehere在 gcc.godbolt.org 上进行反汇编。

总之,不用担心。

关于c - 实现格式化打印,在没有参数时可以不做任何事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53297695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com