警告:创建新线程时未使用的参数'data'

时间:2012-04-01 06:32:42

标签: c pthreads

gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2)
c89

您好,

我正在创建一个线程来做一些工作。但是,定义是这样的:

void *thread_send_fd(void *data)

我正在创建这样的线程:

pthread_create(&thread_send, NULL, thread_send_fd, NULL)

但是,因为我没有实际使用void *数据,因为我没有传递任何参数。我一直警告自己厌倦了。

warning: unused parameter ‘data’ [-Wunused-parameter]

我不想更改我的cflags来停止这些警告,因为它可能会阻止真正的警告。

任何建议,

4 个答案:

答案 0 :(得分:3)

您可以使用

__attribute__((unused))

(void)varname;

选择更容易的人

答案 1 :(得分:2)

你可以在函数中的某处使用它来关闭它

(void)data;

答案 2 :(得分:1)

线程函数不必参数,这个原型就足够了:

void* thread_send_fd();

但是如果你把参数放到原型中,你应该在创建线程时传递一个参数。 Check here找出如何将参数传递给线程。

答案 3 :(得分:0)

使用C ++。然后你可以写

void func(void *) // unnamed parameter
{
}

这是C ++的C类子集是更好的C的小方法之一。

用于抑制警告的C方法是特定于编译器的黑客攻击。 __attribute__事物当然是公然的GCC特定的,并且没有要求将参数的值转换为(void)的任何地方都会在每个编译器上关闭它。

在一些广泛移植的C代码库中,您可能会发现使用宏,如:

UNUSED_PARAM(varname);

适用于各种编译器,例如:

#define UNUSED_PARAM(X) ((void) X) /* for those compilers where that alone works */
相关问题