características del SDK de Windows tuvo éxito macro:¿Por qué hay tantos paréntesis en la macro ÉXITO?
#define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0)
-----------------------^-------------^-----
claramente como con otras macros hay paréntesis para asegurar una interpretación correcta de la intención por el compilador.
Lo que no entiendo es por qué hay paréntesis alrededor de (HRESULT)(hr)
(los marqué con el carácter ^
). hr
está entre paréntesis para que algún constructo complejo pueda estar allí, HRESULT
está entre paréntesis para formar un molde de estilo C, entonces el constructo entero >=
también está entre paréntesis, entonces ¿por qué el par extra de paréntesis alrededor de (HRESULT)(hr)
?
Disculpas por la edición hiper-pedante, pero el título de la pregunta me estaba molestando cada vez que lo vi en la página principal ... – AakashM
@AakashM: Como no soy un hablante nativo de Inglés, tengo que preguntar: ¿qué la diferencia entre "llaves" y "paréntesis"? Veo frases como "necesitas apuntalar los argumentos correctamente en tu macro" de vez en cuando. ¿Por qué la palabra "llaves" no es adecuada aquí? – sharptooth
@sharptooth: "llaves" a menudo, aunque no siempre, significa '{}', a veces llamado "llaves". "Paréntesis" generalmente significa '()', algunas veces llamado "corchetes redondos". "Brackets" se usa a veces para significar '[]' o '<>', algunas veces llamados "corchetes" y "corchetes angulares". Los tres términos se usan indistintamente. El inglés no es tan preciso como C++. –