LINUX.ORG.RU

warning: ISO C does not permit named variadic macros


0

1

При сборке такое сообщение. Собирается, но кое-что яно нормально не работает.

gcc -Wall -pedantic -Wno-long-long -c -s -O2 -march=native -fomit-frame-pointer -fstrength-reduce -fPIC -m64 -Ofast -flto -funroll-loops -fstack-protector-all -fstack-check -DUNIX  -Ihuskylib src/tdelay.c
In file included from huskylib/huskylib.h:50:0,
                 from src/tdelay.c:65:
huskylib/log.h:216:24: warning: ISO C does not permit named variadic macros [-Wvariadic-macros]
 #  define w_dbglog(args...) ((void)0)
                          ^

В log.h оно здесь:

HUSKYEXT void w_log(char key, char *logString, ...);
/*DOC
  Input:  key is the key under which the log-entry will be stored
          logString is the logEntry
  Output: ./.
  FZ:     if the key is in keysAllowed the logString will be written to the log.
*/

#ifdef DEBUG
# define w_dbglog w_log
#else
/* if your compiler supports variadic macros add its recognition here */
/*    vs2005 */
# if (_MSC_VER >= 1400)
#  define w_dbglog(...) ((void)0)
# elif (__GNUC__ >= 2)
#  define w_dbglog(args...) ((void)0)
# else
#  define w_dbglog(exp) ((void)0)
# endif
Как побороть что б собиралось без ругани. Доки по gcc смотрел. Здесь не хватило мозга...

★★★★★

#!/bin/bash -x

gcc -x c -Wall -pedantic - <<EOF
#define w(a...)
int main(){ return 0; }
EOF

gcc -x c -Wall -pedantic -Wno-variadic-macros - <<EOF
#define w(a...)
int main(){ return 0; }
EOF
anonymous
()
Ответ на: комментарий от anonymous

Да. Варнингов нет. Т.е. соберется без проблем?
Я тупил и писал вместо -Wno-variadic-macros -Wnovariadic-macros :)

hbars ★★★★★
() автор топика
Ответ на: комментарий от hbars

зависит от компилятора.

gcc -x c -Wall -pedantic -std=c11 - <<EOF
#include <stdio.h>
#define w_dbglog(...) ((void)0)
int main(){ return 0; }
EOF

anonymous
()
Ответ на: комментарий от Sorcerer

[code]
gcc -Wall -pedantic -Wno-long-long -c -s -O2 -march=native -fomit-frame-pointer -fstrength-reduce -fPIC -m64 -Ofast -flto -funroll-loops -fstack-protector-all -fstack-check -DSTAT_DEBUG -DUNIX -Ihuskylib src/version.c
In file included from huskylib/huskylib.h:50:0,
from src/version.c:33:
huskylib/log.h:217:36: warning: anonymous variadic macros were introduced in C99 [-Wvariadic-macros]
# define w_dbglog(key, logString, ...) ((void)0)
^
[/code]
Все равно ругается...

hbars ★★★★★
() автор топика
Ответ на: комментарий от hbars
HUSKYEXT void w_log(char key, char *logString, ...);
/*DOC
  Input:  key is the key under which the log-entry will be stored
          logString is the logEntry
  Output: ./.
  FZ:     if the key is in keysAllowed the logString will be written to the log.
*/

#ifdef DEBUG
# define w_dbglog w_log
#else
/* if your compiler supports variadic macros add its recognition here */
/*    vs2005 */
# if (_MSC_VER >= 1400)
#  define w_dbglog(...) ((void)0)
# elif (__GNUC__ >= 2)
/* #  define w_dbglog(args...) ((void)0) */
#  define w_dbglog(key, logString, ...) ((void)0)
# else
#  define w_dbglog(exp) ((void)0)
# endif

#endif
hbars ★★★★★
() автор топика
Ответ на: комментарий от hbars

warning: anonymous variadic macros were introduced in C99 [-Wvariadic-macros]

А Вас это не устраивает? Вам какой стандарт нужен? В gcc по умолчанию -std=gnu90. Поставьте -std=gnu99, и будет Вам счастье.

Sorcerer ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.