2012-11-15

g++でコンパイル

C++のソースをコンパイルしてみた。
で、通らなかった (p_q、) なんかなぁ。バージョンは常に新しくしたいから結構あげちゃうんだけど、その度洗礼を受ける感じ?
今回の洗礼は、この2個。

で、環境はAWSのEC2で。
なんでかなぁ。とおもっていても仕方ないので、やっつける (`・ω・´+) キリッ
-------------

warning: enumeration value ‘***’ not handled in switch [-Wswitch]

-Wswitch というオプションによって、列挙型の項目すべてが指定されていない為にでる警告。


例えば、enum hoge {1, 2, 3}; とし、switch 文で case 1:... case 3:... のみで case 2:... を書いていない場合、この警告がでる。
default: を使ってしまうと、(書くのを忘れてしまった) case 2: の場合が当てはまり、警告は出ない。
用途によっては意図したものにならない可能性もあるので default を書かずおけば、パターンが確認できたりする。

warning: suggest parentheses around arithmetic in operand of ‘|’ [-Wparentheses]

-Wparentheses というオプションによって、括弧が省略されているため(優先順位がわからない)にでる警告。

例えば、 これだと警告が出ちゃいます。なので・・・・ とすると警告が出なくなります。
0x80 | ((0xFC&snd)>>2) これを評価した後で、+0x10 なのかあやふやだからだと思われます。


コンパイルオプションに付いてはこちらを参照
http://gcc.gnu.org/onlinedocs/gcc-4.3.3/gcc/Warning-Options.html
http://www.geocities.jp/woodwood77777/gcc_gnu.htm

-Wall をつけているので、いろいろ警告が出た模様。。。。
headerファイルも変わったみたい。。。
http://gcc.gnu.org/gcc-4.3/porting_to.html
いろいろ大変ですね。おしまい (´・ω・`)

0 件のコメント:

コメントを投稿