rublesaha
Pôster original- 22 de dezembro de 2008
- 8 de janeiro de 2009
Estou usando este trecho 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 ('.................');
}
Mas estou recebendo o aviso:
'sugira parênteses em torno da atribuição usada como valor verdade' para a primeira linha i, e o for 'para' loop .... alguém pode me ajudar a me livrar deste aviso .. PARA
kpua
- 25 de julho de 2006
- 8 de janeiro de 2009
No entanto, às vezes é a maneira mais simples de codificar o que você quer dizer (embora eu não ache que esteja necessariamente em seu exemplo). Quando você tem uma atribuição em uma instrução if, o GCC geralmente espera algo assim:
Código:
if ( (foo = bar()) != NULL )
Observe os parênteses extras ao redor da atribuição. O GCC sugere que você use parênteses para evitar o seguinte erro:
Código:
if ( foo = bar() != NULL )
que não verifica se o valor atribuído a foo é igual a NULL, mas sim atribui o valor booleano (bar ()! = NULL) a foo.
Também é comum e geralmente mais claro ter a verificação booleana explícita lá, então é por isso que o GCC espera isso. S
Sander
para
- 24 de abril de 2008
- 9 de janeiro de 2009
Código:
if (a = b) {...}
está correto C (atribua b para a e verifique se não é zero), mas na maioria das vezes as pessoas realmente quiseram
Código:
if (a == b) {...}
Como a atribuição dentro de if () é a exceção, o GCC emite um aviso sobre isso. Também para futuros leitores de seu código, os parênteses extras indicam 'sim, eu realmente quero dizer atribuição aqui'.
Publicações Populares