VC 6とVS 2008におけるC++コンパイラの違い

791 ワード

1.forで定義する変数の役割ドメインが異なる
for (int i=0; i<100; i++){}
for (int i=100; i<200; i++){}

以上のコードはVS 2008でコンパイル可能である.VC 6.0で「'i':redefinition」のコンパイルエラーが表示されます.
2.static const変数をヘッダファイルで初期化できるか
class A
{
public:
	static const int m_MAXNUM = 10;
};

以上のコードはVS 2008でコンパイル可能である.VC 6.0では、2つの難解なコンパイルエラーが表示されます.
error C2258: illegal pure syntax, must be '= 0'
error C2252: 'm_MAXNUM' : pure specifier can only be specified for functions
コードを以下に変更するとコンパイルできます.
//a.h
class A
{
public:
	static const int m_MAXNUM;
};
// a.cpp
const int A::m_MAXNUM = 10;

 
これらの違いは、コードを移植する際に考慮する必要があります.覚えておいてください.