Mot*_*tti 4 c++ switch-statement
我刚刚意识到我引入的一个错误,令我感到惊讶的是它编译了,打开常量是否合法?
Visual Studio 8和Comeau都接受它(没有警告).
switch(42) { // simplified version, this wasn't a literal in real life
case 1:
std::cout << "This is of course, imposible" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
小智 18
接通常数并不是不可能的.考虑:
void f( const int x ) {
switch( x ) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
然而,打开文字常量很少有意义.但这是合法的.
编辑:考虑一下,有一种情况下,开启文字是完全合理的:
int main() {
switch( CONFIG ) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
程序编译的地方:
g++ -DCONFIG=42 foo.cpp
Run Code Online (Sandbox Code Playgroud)
Chr*_*isF 16
并非所有对编译器有意义的事情都有意义!
以下也将编译,但没有意义:
if (false)
{
std::cout << "This is of course, imposible" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
这取决于我们作为开发人员发现这些.