2013年7月6日土曜日

-Wno-invalid-offsetof , もしくはOffset of on non-POD type の警告について

またレアなネタな気がするが、日本語ブログがあまりヒットしないので書いておく

今使ってるソースが過去移植のソースでiOS向けなんですけど
/Users/takemura/Documents/github/scs/client/***********.cpp:628:49: Offset of on non-POD type 'SYSTEM'

とかでるわけですよ。
warning削ろうとしてて、色々調べて結果的には

xcodeの設定で Undefined Use of offsetof Macro をNOにすればいいと判明

色々説明

・POD, non-POD type とは?

POD = Plain Old Data
virtualとかバシバシ定義してあるようなクラスはnon-POD型, int, float, char, struct, とかはPOD型というくくりで大体あってる
詳しく知りたい人はぐぐれば出てくる


んで、まぁこの Offset of non-POD type... という警告は "offsetof"のマクロを non-POD型に使うとヤバイよ、という警告なわけだが、、、まぁ最近のコンパイラだったら大体大丈夫なんじゃね?という判断でxcode上で以下の設定を弄ると消せる。
少なくとも今使ってるソースでは大丈夫そうに見えたし、こいつ持ってくとしてもいいとこAndroidぐらいだろ。

Apple LLVM 5.0 - Warnings - c++ -> Undefined Use of offsetof Macro

本当は一部ソースだけに制限したかったので
#pragma GCC diagnostic ignored "-Wno-invalid-offsetof"
と書いたのだが、これだと何故かxcodeでは動かない。
んー・・・わからんが警告が消えたのでとりあえずは良しとしよう。。。

"-Wno-invalid-offsetof"についてはこちらの記事が日本語訳しているので気になる人はどぞ。
 http://d.hatena.ne.jp/runicalp/20081130/1228025769


0 件のコメント: