Recientemente me encontré con un código que parecía:¿Por qué llamar al operador sizeof con dos argumentos?
if(sizeof(var,2) == 4) { ... }
(donde var
es un tipo)
me quedé bastante sorprendido de ver lo que parecían ser dos argumentos para el operador sizeof
. Un escaneo rápido del estándar ISO/ANSI C99 no produjo ningún secreto. No pude encontrar ninguna lectura de la gramática que permitiera una coma allí.
Al buscar en Google Code, pude encontrar an example de esta sintaxis en algún código PPC.
¿Es esto alguna sintaxis específica de PPC? Qué significa eso?
EDIT: Resulta que tanto lo que estaba viendo -, así como el código vinculada - es sintaxis específica a la WindRiver Diab compiler:
sizeof(type, int-const):
If int-const is 0 sizeof returns the size in bytes of type.
If int-const is 1 sizeof returns the alignment of type.
If int-const is 2 sizeof returns an integer constant designating the type of type. Look up "sizeof operator" in the Diab C/C++ User's Guide for values.
Wow, realmente han sobrecargado el significado del operador sizeof
.
Edit2: documentación completa está aquí: http://www.vxdev.com/docs/vx55man/diab5.0ppc/c-additi.htm#3001432
Es importante para esta discusión mencionar que "var" es un tipo. Porque eso descartaría al operador de coma. Pero "var" en su pregunta parece una variable. –
Variable renombrada para mayor claridad. Gracias. –
En Edit: Wow, eso es ... una complicación totalmente innecesaria del lenguaje C. C es lo suficientemente complicado ... Si quieres poder decir la alineación, escribe una alineación de función u operador, si insistes. Sheesh. (No es culpa tuya David, solo desahucio acerca de los malos implementadores del lenguaje ...) –