gpt4 book ai didi

c - 将接收到的可变数量的参数传递给另一个函数

转载 作者:行者123 更新时间:2023-12-02 06:56:06 24 4
gpt4 key购买 nike

在你说它重复之前,我已经读过这个:How to pass variable number of arguments from one function to another?

我有这样一个函数:

void tlog_function(t_log* logger, const char* message_template, ...) {
pthread_mutex_lock(&loggerLock);
log_function(logger, message_template, ...); // What I want to do..
pthread_mutex_unlock(&loggerLock);
}

还有一个类似这样的函数,它不是我的,我从第三方库中使用它:

void log_function(t_log* logger, const char* message_template, ...);

如您所见,我想做的只是向该函数添加一个互斥量以使其成为线程安全的,我知道我可以使用 va_list 但在这种情况下我无法更改代码第二个函数,因为它在库中,而我只有 .h 文件。

那么,有什么办法可以做到这一点吗?

最佳答案

如果您无法更改代码并且没有va_list 版本的库函数,您可以使用我所知道的最接近的方法是使用宏和##__VA_ARGS__。 (which is a GCC only extension)。

你会想要这样的东西:

#define tlog_function(logger, message_template, ...) do { \
pthread_mutex_lock(&loggerLock); \
log_function(logger, message_template, ##__VA_ARGS__); \
pthread_mutex_unlock(&loggerLock); \
} while(0)

关于c - 将接收到的可变数量的参数传递给另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31124725/

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