古月不傲 发表于 2021-1-13 18:36

__VA_ARGS__的用法

#include <iostream>

#define log(...) printf(__VA_ARGS__)

int main(void)
{
        log("放三等奖开放了解到了%d %s %d\n", 15, "abc", __LINE__);

        return 0;
}

aristan 发表于 2021-1-13 19:41

__VA_ARGS__就是可变参数的宏表达吧?

古月不傲 发表于 2021-1-13 19:43

aristan 发表于 2021-1-13 19:41
__VA_ARGS__就是可变参数的宏表达吧?

是的,没错

小小少年爬山坡 发表于 2021-1-13 20:17

本帖最后由 小小少年爬山坡 于 2021-1-13 20:20 编辑

你想表达什么? 我给你来个现代点的

template<typename...Args>
void print(const char* fmt, Args&&...args)
{
    printf(fmt, std::forward<Args>(args)...);
}

aristan 发表于 2021-1-13 20:23

宏函数好像还可以用##连接可变参数,达到这个目的,比如#define xstr(x, y...)   xstrfunc((x) , ## y)

古月不傲 发表于 2021-1-13 20:44

本帖最后由 古月不傲 于 2021-1-13 21:03 编辑

aristan 发表于 2021-1-13 20:23
宏函数好像还可以用##连接可变参数,达到这个目的,比如#define xstr(x, y...)   xstrfunc((x) , ## y)
是的,嗯
页: [1]
查看完整版本: __VA_ARGS__的用法