下記のtestという関数は、
環境変数TESTの値がONかどうかを判定する関数です。
この関数を別の関数から呼び出すときに、
static env は 最初に呼び出された一回だけ初期化されるため、
getenvは何度も呼び出されないと思っています。
この認識は正しいでしょうか?
bool test()
{
static bool env = ((stricmp( getenv( "TEST" ), "ON" ) == 0) ? true : false);
return env;
}
宜しくお願いいたします。
> この認識は正しいでしょうか?
Yes.
でも他のバグがあるのでこのコードはお勧めできない、かな・・・
tetrapod様、ご回答ありがとうございます。
このコードに含まれているバグとは何なのでしょうか?
また、お勧めのコードをお教えいただけますでしょうか?
宜しくお願いいたします。
getenv は env がないとき NULL を返すから、今のままではまずい。
どう直すとよいかは、どう動いて欲しいかで異なるので一概に言えない。
そもそも当該プログラム中で putenv したら自己の環境変数の更新ができるわけなので、
最初に1回だけ getenv するのが「仕様として良い」かどうかも要再検討。
tetrapod様、指摘して頂いた点を再検討してみます。
ご回答有難うございました。