私は C で非破壊的な変換ルーチンを作成中ですが、(少なくとも Visual C++ では) 関数が逆の順序で解決されることに気付きました。
そう:
main()
{
char* psString[] = { "Hello", "World", "World2", "World3" };
printf("%s - %s - %s - %s\n",
H2A_N(psString[0]),
H2A_N(psString[1]),
H2A_N(psString[2]),
H2A_0(psString[3]));
return 1;
};
私のコードは再入可能ではなく、単一のスレッドでのみ実行されるため、文字の静的配列を使用して結果を保存するつもりでした。
私の計画は、出力をバッファーの先頭に書き込み、H2A_N への後続の呼び出しのために次のアドレスを残す関数 H2A_0 を持つことでした。
このアプローチにはいくつかの欠点があることは認識していますが、この変換ルーチンを多くの既存のコードに適用する必要があるため、単純であるほど良いです (メモリの解放を台無しにしたくありません)。
私の質問は:
- 関数を(引数として他の関数に渡されるときに)逆の順序で解決するのは、C標準の一部ですか。
- これを行うより良い方法はありますか?