Por que sizeof é chamado de operador em tempo de compilação?
Porque, em tempo de compilação, o compilador calcula o tamanho da expressão e substitui esse valor constante em tempo de compilação.
Não é realmente um operador de tempo de execução?
Não. Você pode até usar sizeof
para avaliar o tamanho das expressões que você não pode executar legalmente (ou seja, isso implicaria um comportamento indefinido), desde que o compilador possa descobrir qual é o tipo da expressão.
Além disso, mesmo antes do C ++ 11 constexpr
, você pode usar sizeof
expressões de maneiras que não pode usar expressões em tempo de execução.
E se é realmente um operador em tempo de compilação, como ajuda na produção de código portátil ...
Os tipos podem variar em tamanho em diferentes plataformas. Usar sizeof
expressões em vez de suposições codificadas significa que seu código não será quebrado quando você compilar em uma plataforma diferente e seus tipos mudarem de tamanho.