предупреждение: неиспользуемый параметр «данные» при создании нового потока - PullRequest
1 голос
/ 01 апреля 2012
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]

Я не хочу менять свои флаги, чтобы прекратить эти предупреждения, так как это могло бы предотвратить подлинное предупреждение.

Любые предложения,

Ответы [ 4 ]

3 голосов
/ 01 апреля 2012

Вы можете использовать

__attribute__((unused))

или

(void)varname;

Выберите, что вам удобнее

2 голосов
/ 01 апреля 2012

Вы можете отключить его, используя это где-нибудь в вашей функции

(void)data;
1 голос
/ 01 апреля 2012

Функция потока не должна принимать аргумент, этого прототипа достаточно:

void* thread_send_fd();

Но если вы поместите параметр в прототип, вы должны передать параметр при создании потока. Проверьте здесь , чтобы узнать, как передать аргумент потоку.

0 голосов
/ 02 апреля 2012

Используйте C ++. Тогда вы можете написать

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

Это один из небольших способов, которым C-подобное подмножество C ++ является лучшим C.

Методы C для подавления предупреждения - это хаки, специфичные для компилятора. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * __attribute__ * * * *} * * * * * * * * * * * - явная специфика GCC, и нигде не требуется, чтобы приведение значения параметра к * 100 7 * закрывало это на каждом компиляторе. * 100 8 *

В некоторых широко портированных базах кода C вы можете найти использование макросов для этого, например:

UNUSED_PARAM(varname);

, которые соответствующим образом определены для различных компиляторов, например ::

#define UNUSED_PARAM(X) ((void) X) /* for those compilers where that alone works */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...