Sirius X

需要無視の自己満足ブログです。

【Visual C++】【ゲーム開発】警告レベルを…

Category:Rockman Reanimated, Visual Studio, ゲーム開発, ソフトウェア Comment:0

eye-catch

鳴りやまないC4996エラー。

もううんざり。

しかしながら、コンパイラの警告レベルを「/W0」でプログラミングし続けると言う愚かな考えを持っていた私にとって、

これを永劫続けるにしても流石にダメだろうと思いデフォルト値に変更…(/W3)

するとどうだろうか?

途端にエラーが数十も出てくるのでした😂


今回は、ファイル読み込みで使用していた古来からの伝統魔術”fopen~fgets~fclose”フローを削除。

新たにifstreamクラスのメソッドを使用。

    bool fileLoad(const char* filepath) {
        const auto symbols = '$';
        std::string str_key, str_value;

        // => Deleted code from here. A reason's get a warning that C4996 this function or variable may be unsafe.
        //FILE* fp;
        //fp = fopen(filepath, "r");
        //if (fp == NULL) return false;

        //while (NULL != fgets(str, max_len, fp)) {
        //    if (symbols == str[0]) {
        //        str_key = strtok(str, " ");
        //        str_value = strtok(NULL, "\n");
        //        env_params[str_key] = str_value;
        //    }
        //}
        //fclose(fp);

        std::ifstream fs(filepath);
        if (!fs) return false;

        while (std::getline(fs, str_key)) {
            if (symbols == str_key[0]) {
                std::stringstream ss{ str_key };
                std::getline(ss, str_key, ' ');
                std::getline(ss, str_value);
                env_params[str_key] = str_value;
            }
        }

        return true;
    }


    bool getParameter(const char* label, std::string* byref) {
        auto itr = env_params.find(label);
        if (itr != env_params.end()) {
            *byref = env_params[label];
            return true;
        } else {
            return false;
        }
    }

コメントを残す

メールアドレスが公開されることはありません。