rublesaha
Poster original- 22 de diciembre de 2008
- 8 de enero de 2009
Estoy usando este fragmento de código
void * handle_;
if (handle_ = dlopen ('/ System / Library / Frameworks / DiskArbitration.Framework / Versions / A / DiskArbitration', RTLD_NOW))
{
printf ('............');
}
else if (handle_ = dlopen ('/ System / Library / PrivateFrameworks / DiskArbitration.Framework / Versions / A / DiskArbitration', RTLD_NOW))
{
printf ('.................');
}
Pero recibo la advertencia:
'Sugerir paréntesis alrededor de la asignación utilizada como valor de verdad' para la primera línea i, e para el bucle 'for' ... ¿alguien puede ayudarme a deshacerme de esta advertencia ... PARA
kpua
- Jul 25, 2006
- 8 de enero de 2009
Sin embargo, a veces es la forma más sencilla de codificar lo que quieres decir (aunque no creo que esté necesariamente en tu ejemplo). Cuando tiene una asignación en una declaración if, GCC generalmente espera algo como esto:
Código:
if ( (foo = bar()) != NULL )
Observe los paréntesis adicionales alrededor de la tarea. GCC sugiere que use los paréntesis para evitar el siguiente error:
Código:
if ( foo = bar() != NULL )
que no verificaría que el valor asignado a foo sea igual a NULL, sino que asignará el booleano (bar ()! = NULL) a foo.
También es habitual y, en general, más claro tener la verificación booleana explícita allí, por eso GCC espera esto. S
Lijadora
a
- 24 de abril de 2008
- 9 de enero de 2009
Código:
if (a = b) {...}
es correcta C (asigne b a ay verifique que no sea cero), pero la mayoría de las veces la gente realmente quiso decir
Código:
if (a == b) {...}
Dado que la asignación dentro de if () es la excepción, GCC emite una advertencia al respecto. También para los futuros lectores de su código, los paréntesis adicionales indican 'sí, realmente me refiero a la asignación aquí'.
Entradas Populares