静的配列の基本的なルールは誰もが知っています。
int size = 20;
char myArray[size];
合法ではありません。と。
const int size = 20;
char myArray[size];
大丈夫です。
しかし、これはどうですか。
int f(const int size)
{
char myArr[size];
}
void main()
{
f(2);
f(1024);
}
MSVCはそれがエラーであると言います、gccはそれをうまくコンパイルして実行するようです。
明らかに、それはポータブルではありませんが、それは受け入れられるべきですか?
その状況で正しいことを行うコンパイラはどれですか?
また、コンパイラーによって許可されている場合、適切なプログラミング標準/プラクティスによって許可されるべきですか?
編集済み:速度に応じてスタックを割り当てたいという考えですが、コンパイル時に配列のサイズがわかりません。他にもいくつかの解決策があり、スタック割り当てはおそらく重要な最適化ではないことを私は知っていますが、それは興味深い使用法だと思います。