この方法でメモリを割り当てた割り当て用のプログラムを作成しました
EdgeBucket* edgeTable[ n_scanlines ];
。これが C では通常違法であることは理解していますが、C++ でも実行できないことは知りませんでした。ただし、g ++を使用してコンパイルすると、コンパイルエラーは発生しません。しかし、私の採点者はビジュアル スタジオを使用しており、私のプログラムをビルドしようとすると、配列の長さは一定でなければならないというエラーが表示されました。私は通常、 -ansi および -Wall オプションを使用してプログラムをコンパイルし、コンパイラ間の整合性を確保していますが、それでもこれは検出されませんでした。私はこれによって成績が損なわれることを懸念しています.-ansiコンパイラがこれをキャッチしなかった理由と、コンパイラ間の不一致を防ぐために何ができるかを知っている人はいますか?
1 に答える
1
-pedantic-errors
フラグを使用します。例。
それらは VLA (可変長配列) として知られています。は、C99 以降の C では合法であり、C++ では違法です。
于 2013-04-15T22:30:15.207 に答える