Ho un problema simile (anche se in C++) con la mia macro SNAP_LISTEN (...) come definito di seguito. L'unica soluzione che ho trovato è creare una nuova macro SNAP_LISTEN0 (...) che non includa il parametro args .... Non vedo un'altra soluzione nel mio caso. L'opzione della riga di comando -Wno-variadic-macros impedisce l'avviso variadic ma non quello ISO C99!
#define SNAP_LISTEN(name, emitter_name, emitter_class, signal, args...) \
if(::snap::plugins::exists(emitter_name)) \
emitter_class::instance()->signal_listen_##signal(\
boost::bind(&name::on_##signal, this, ##args));
#define SNAP_LISTEN0(name, emitter_name, emitter_class, signal) \
if(::snap::plugins::exists(emitter_name)) \
emitter_class::instance()->signal_listen_##signal(\
boost::bind(&name::on_##signal, this));
Edit: versione del compilatore
g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Edit: comando avvertimenti linea
set(CMAKE_CXX_FLAGS "-Werror -Wall -Wextra -pedantic -std=c++0x
-Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization
-Wformat=2 -Winit-self -Wlogical-op -Wmissing-include-dirs -Wnoexcept
-Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow
-Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow=5 -Wswitch-default
-Wundef -Wno-unused -Wno-variadic-macros -Wno-parentheses
-fdiagnostics-show-option")
I -Wno-variadic-macro stessa opera da non ottengo un errore che dice che il variadic non è accettato Tuttavia, ho lo stesso errore di Matt Joiner:
cpfs.c:232:33: warning: ISO C99 requires rest arguments to be used
fonte
2012-10-14 07:31:17
Ciò mi ha lasciato perplesso per un po 'di tempo. In realtà il modo standard sarebbe 'log_debug ("% s "," Resetting bitmap ");'. – Dummy00001
Strano che gli ellissi del preprocessore sostituiscano uno o più argomenti, tuttavia i ellissi C sostituiscono zero o più. Sto avendo qualche problema nell'estrarre questa semantica dallo standard C99. –