¿Por qué sizeof se llama operador de tiempo de compilación?
Porque, en tiempo de compilación, el compilador calcula el tamaño de la expresión y sustituye ese valor constante en tiempo de compilación.
¿No es realmente un operador de tiempo de ejecución?
No. Incluso puede usar sizeof
para evaluar el tamaño de las expresiones que no puede ejecutar legalmente (es decir, que incurriría en un Comportamiento indefinido), siempre que el compilador pueda determinar cuál es el tipo de expresión.
Además, incluso antes de C ++ 11 constexpr
, puede usar sizeof
expresiones de formas que no puede usar expresiones en tiempo de ejecución.
Y si de hecho es un operador en tiempo de compilación, ¿cómo ayuda a producir código portátil ...
Los tipos pueden variar en tamaño en diferentes plataformas. El uso de sizeof
expresiones en lugar de suposiciones codificadas significa que su código no se romperá cuando compile en una plataforma diferente y sus tipos cambien de tamaño.