VLA、C99で定義されている可変長配列、MS Visual C ++での使用を有効にするにはどうすればよいですか、それともまったく不可能ですか?
はい、C ++標準はC89に基づいており、VLAはC89標準では使用できないため、C ++では使用できないことを知っていますが、MSVC ++もCコンパイラであると想定されており、/を使用してオンに切り替えることができます。 TCコンパイラパラメータ(Compile as C Code (/TC)
)。ただし、これを行うとVLAが有効にならないようで、コンパイルプロセスは失敗し、C ++(Compile as C++ Code (/TP)
)と同じエラーが発生します。たぶん、MSVC ++ CコンパイラはC89にのみ準拠しているのでしょうか、それとも何か(特別な構造またはプラグマ/定義)が不足しているのでしょうか?
コードサンプル:
#include <stdlib.h>
int main(int argc, char **argv)
{
char pc[argc+5];
/* do something useful with pc */
return EXIT_SUCCESS;
}
コンパイルエラー:
エラーC2057:予期される定数式
エラーC2466:定数サイズ0の配列を割り当てることができません
エラーC2133:'pc':不明なサイズ