我正在尝试将项目从Borland C++
迁移到Visual C++
我注意到如本例所述在处理枚举方面存在差异
档案:Test_enum.cpp
#ifdef _MSC_VER
#include <iostream>
#else
#include <iostream.h>
#endif
#include <conio.h>
using namespace std;
enum {
ENUM_0 =0,
ENUM_1,
ENUM_2,
ENUM_3
} ;
int main(int argc, char* argv[])
{
#ifdef _MSC_VER
cout << "Microsoft Visual compiler detected!" << endl;
#elif defined(__BORLANDC__)
cout << "Borland compiler detected!" << endl;
#elif
cout << "Other compiler detected!" << endl;
#endif
#if ENUM_1 > 0
cout << "ENUM_1 is well defined at preprocessing time" << endl;
#else
cout << "No way to see enum variables at preprocessing time" << endl;
#endif
cout << "Type any character to exit..." << endl;
#ifdef _MSC_VER
_getch();
#else
getch();
#endif
return 0;
}
在Visual Studio中运行代码将得到以下输出:
Microsoft Visual compiler detected!
No way to see enum variables at preprocessing time
Type any character to exit...
通过使用Borland,我得到:
Borland Compiler detected!
ENUM_1 is well defined at preprocessing time
Type any character to exit...
我想知道
Borland
如何识别enum
吗?是否可以在visual
中执行相同的操作? 最佳答案
旧的,过时且完全不相关的Borland C ++编译器有一些独特之处。其中之一是,您可以在预处理程序指令中使用C ++常量表达式。
#if sizeof -1 > 0
cout << "It looks like you got lucky today" << endl;
#endif
const int answer = 42;
#if answer == 42
cout << "Unbelievable" << endl;
#endif
在地狱中绝对不可能有任何机会可以与任何现代编译器一起使用。