89 votos

¿Cómo mejor silencio una advertencia sobre las variables sin usar?

Tengo una cruz de la aplicación de la plataforma y en algunas de mis funciones no todos los valores pasados a las funciones que se utilizan. Por lo tanto me sale un aviso de GCC me dice que hay variables sin usar.

¿Cuál sería la mejor forma de codificación alrededor de la advertencia?

Un #ifdef alrededor de la función?

#ifdef _MSC_VER
void ProcessOps::sendToExternalApp(QString sAppName, QString sImagePath, qreal qrLeft, qreal qrTop, qreal qrWidth, qreal qrHeight)
#else
void ProcessOps::sendToExternalApp(QString sAppName, QString sImagePath, qreal /*qrLeft*/, qreal /*qrTop*/, qreal /*qrWidth*/, qreal /*qrHeight*/)
#endif
{

Esto es tan feo, pero parece que la forma en que el compilador prefiere.

O no me asignar cero a la variable al final de la función? (los que me odian porque es la alteración de algo en el flujo del programa para silenciar una advertencia del compilador).

Hay una manera correcta?

141voto

Alex B Puntos 34304

Usted puede puso en " (void)var; " expresión (no) para que un compilador ve es utilizado. Este es portable entre los compiladores.

Por ejemplo

void foo(int param1, int param2)
{
    (void)param2;
    bar(param1);
}

O,

#define UNUSED(expr) do { (void)(expr); } while (0)
...

void foo(int param1, int param2)
{
    UNUSED(param2);
    bar(param1);
}

27voto

alex tingle Puntos 3134

Su solución actual es mejor - comente el nombre del parámetro si no lo usas. Eso se aplica a todos los compiladores, así que no tienes que usar el preprocesador para hacerlo especialmente para GCC.

25voto

ezpz Puntos 5273

En gcc, puede utilizar la __attribute__((unused)) Directiva de preprocesador que lograr su objetivo. Ejemplo:

int foo (__attribute__((unused)) int bar) {
   return 0;
}

9voto

Marcin Wyszynski Puntos 531

Una forma aún más limpia es sólo comentar los nombres de variables:

int main(int /* argc */, char const** /* argv */) {
  return 0;
}

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X