2012-03-09 14 views
13

¿Cómo se llama la construcción (int) { 1 } en C? Una conjetura era "constante anónima", pero esto no mostró ninguna ayuda en Google. Como nota al margen, puede usar esta construcción para decirle a ioctl que desea usar una variable con el valor de 1: ioctl (..., &(int) { 1 }).¿Cómo se llama este constructo (int) {1}?

+0

Tenga en cuenta que 'int' es el tipo incorrecto para' {1} '. Se supone que es '(int []) {1}'. –

+2

@ jørgensen: no, esto es válido. El tipo está determinado por la parte entre paréntesis y puede ser un tipo simple como 'int'. –

Respuesta

13

Se llama "compound literal" y construye un valor temporal int-lvalue.

+0

Gracias por el enlace. – Sven

+0

Tenga en cuenta también que los literales compuestos son valores l que, cuando se pasan a través de un puntero, como se hace aquí, se pueden cambiar. En la llamada anterior, el valor temporal podría ser modificado por ioctl(), que podría ser un error difícil de encontrar. –

Cuestiones relacionadas