2013年6月4日火曜日

[C++] xcodeで "In-class initializer for static data member of type 'const float' is a GNU extension" というWarningが出る

どうも、俺@仕事中です。
ずっとcocos2d-x(c++)を使っての開発中です。

タイトルの件ですが、Xcodeでビルドしたときに
In-class initializer for static data member of type 'const float' is a GNU extension
というwarningが出て 「なんか気持ち悪いなぁ」となる人へ。

これは直訳すると、
「const floatというというstaticなメンバ変数の初期化をするのはGNU拡張だよ」という意味です。
簡単に言うと、
「const floatは普通は使えへんで、せやけどGNU拡張機能でコンパイルできるようになっとるんやで、感謝せえよアホ」
という意味です。

C++(C言語も?)では
const float
という宣言は仕様で禁止されているそうです。

このワーニングが出る場合、動作に問題はありませんが一応直し方を教えてくれている天才がいました。
にゃんにょんProgramTips

ヘッダファイル(HogeClass.h)
// 宣言
public:
  static const float HOGE_FLOAT;
としておき、
定義ファイル(HogeClass.cpp)
#include "hoge.h"
const float HogeClass::HOGE_FLOAT = 10.0f;

// 以下メソッドの定義等
すばらしい!

まぁ、
#define HOGE_FLOAT 10.0
とかでも良いんでしょうけどね。型が分かりにくいですしね。

以上でぇぇぇぇぇす。

0 件のコメント: