オプション沼(26) gcc、Wunused一族、一筋縄ではいかない奴?

wextra_wunused
Joseph Halfmoon

今回gccのオプションで練習してみるのは未使用の「何か」を見つけて警告を発する -Wunusedオプション「一族」です。一族になるのは、見つける対象の「何か」に応じて多数の単独オプションが存在するからです。しかしよくよく調べてみると「代表」の筈の-Wunusedだけでは見つからない「何か」もあり。一筋縄ではいきまへん。

“オプション沼(26) gcc、Wunused一族、一筋縄ではいかない奴?” の続きを読む

オプション沼(25) gcc、Wmultistatement-macros、うかつな奴?

MultMacros
Joseph Halfmoon

前回はmultichar定数への警告でした。今回はmultiつながり?で multistatementマクロに対する警告の発出です。C++ならテンプレートというものがあるのでそれに任すのも手なのでしょうが、Cのマクロには多くを期待しない方が良いように思ってます(個人の感想です。)たまに人様の超絶マクロに感動しますが。

“オプション沼(25) gcc、Wmultistatement-macros、うかつな奴?” の続きを読む

オプション沼(24) gcc、multichar定数、noなのnoじゃないの?

multiCharEC
Joseph Halfmoon

gccのオプション、「no-ナンチャラ」で指定なし、noなしの「ナンチャラ」で指定あり、という両方があるものが多数ありますな。今回のWno-multichar(あるいはWmultichar)もそのようなオプションの一つです。だいたいmulticharacter constantなんて使ったことねーずら。何それ。

“オプション沼(24) gcc、multichar定数、noなのnoじゃないの?” の続きを読む

オプション沼(23) gcc、dangling-pointerの見つけ方、伝統的な方?

optionDangligPointerSRCa
Joseph Halfmoon

gccのオプション、バージョンアップとともに増え続けてるみたいデス。旧版コンパイラを後生大事に使用中。最新版なら存在するハズのオプションが不在なこともままあり。今回はdangling-pointerを警告するオプションでそれに遭遇しました。ま、古い版のコンパイラでも検出する手段はあり~の、ただし「ステージ」が違うっと。

“オプション沼(23) gcc、dangling-pointerの見つけ方、伝統的な方?” の続きを読む

オプション沼(22) gcc、Wnull-dereference、最適化しないと効かない3

Wnull_defreference_testcode
Joseph Halfmoon

前回前々回と最適化をかけた時だけ働いてくれる警告オプションを見ました。最適化の副産物として、ついでにチェックしてやるみたいな。大人の事情ね。ちょっと興味をもって調べてみたら、そういうオプションまだまだあるみたいっす。今回のWnull-dereferenceもそういうオプションのひとつであります。

“オプション沼(22) gcc、Wnull-dereference、最適化しないと効かない3” の続きを読む

オプション沼(21) gcc、-Wuninitialized、最適化のときだけ働く、その2

uninitEC
Joseph Halfmoon

前回は最適化オプションの有無で挙動が異なるWarray-boundsオプションでした。同様に最適化オプションの有無が挙動に影響する警告オプションは他にもありました。今回のWuinitializedオプションもその一つです。未初期化の変数を使用しちゃったときに警告してくれるもの。Wallしていても最適化してなければザル。

“オプション沼(21) gcc、-Wuninitialized、最適化のときだけ働く、その2” の続きを読む

オプション沼(20) gcc、-Warray-bounds、最適化のときは世話焼きになる

WarningLocations
Joseph Halfmoon

警告オプションの重箱の隅をつつくようなことをしていると、「これ駄目でしょ」的なコードを書くことになります。しかし何の警告も出ずにコンパイル出来、ましてや実行もできてしまうと。どう見たってエラーなんだけれども。今回のWarray-boundsオプションは、最適化するとビシビシ指摘してくれるのに、最適化しないとザル?

“オプション沼(20) gcc、-Warray-bounds、最適化のときは世話焼きになる” の続きを読む

オプション沼(19) gcc、weak symbolの真偽、続-Waddressオプション

weaksymbol_EC
Joseph Halfmoon

組み込みで weak symbol を目にするのは割り込み関係かもしれません。ビルド時にエラーにならないように「とりあえず」weakな奴を並べておいて、後でユーザが実体関数を書いたらそっち、みたいな。前回Waddress オプション使ったときにweak symbolについてチラッと書いてあったです。今回はその確認っと。
“オプション沼(19) gcc、weak symbolの真偽、続-Waddressオプション” の続きを読む

オプション沼(18) gccの-Waddressオプション、警告オプションその1

warning
Joseph Halfmoon

「とりあえず」警告は全部載せの -Wall オプション使っておけと言われます。しかし、ここはあえてバラバラに警告オプションをひとつひとつ丁寧に?味わっていきたいと思います。それにしても-Wallに含まれる警告オプションだけでいくつあるんだ?それに警告の裏側には新たな世界が広がってるみたいな兆候も。大丈夫か。
“オプション沼(18) gccの-Waddressオプション、警告オプションその1” の続きを読む

オプション沼(17) どしたら差が出る? gccの-fno-builtinオプション

gcc940_x64
Joseph Halfmoon

元より野次馬、このところgccのオプションの「なんだかわからん」「不穏な雰囲気がする」やつらをめぐっております。今回は -fno-builtinオプションとな。コンパイラ素人の勝手な理解では、gccが「内蔵する」ビルドイン関数を使わないでくれとリクエストするためのオプション、である筈。しかしこの使い方が分からないデス。
“オプション沼(17) どしたら差が出る? gccの-fno-builtinオプション” の続きを読む

オプション沼(16) ANSI-C(ISO-C)の闇? -ansiと-pedantic

optANSI_EC
Joseph Halfmoon

元より野次馬、不穏な気配のたなびくところにひかれます。前回が「小さい闇」なら、今回のは「おおきい闇」でしょうか。以前から2つのオプションに関する説明の書きぶりの「不貞腐れた感じ」が気になっていたのです。ウルセー奴らがいるから、あるいは、あんたの思っているのとは違うぜ的な。元より素人、ちょっとのぞき見してみるだけ。 “オプション沼(16) ANSI-C(ISO-C)の闇? -ansiと-pedantic” の続きを読む

オプション沼(15) インクルードガードの闇?-Wno-import、#importは非推奨

import_example_c
Joseph Halfmoon

遥か太古の時代、C言語をかじり始めた最初からインクルードガード書いてきました。メンドクセーけど真面目にCプログラム書くときは必須。しかし書かずに済ませる方法があったです、#import。元はといえばObjective-Cの機能みたいですが、gccならフツーのCでも使えていた。知ってた?でも今はその立ち位置微妙。
“オプション沼(15) インクルードガードの闇?-Wno-import、#importは非推奨” の続きを読む

オプション沼(14) 最適化で以下省略なコード書いてみました。gcc -O3オプション

O3EC
Joseph Halfmoon

別シリーズのRust記事にて時間計測しようとしたらばコンパイラの最適化のために計測対象が「消えてた」件これあり、ありがち?今回こちらでは消えて(飛ばされてしまう)c言語コードをあえて作成しgccの最適化オプションの「威力」を痛感してみたいと思います。最適化は奥深いのでまたやるつもりですが。 “オプション沼(14) 最適化で以下省略なコード書いてみました。gcc -O3オプション” の続きを読む

オプション沼(13) コードカバレッジを計測する準備、gcc ‐‐coverageオプション

coverageGcov
Joseph Halfmoon

今回はソースコードのどこを何回実行したのだか測定できる、コードカバレッジ計測のためのgccのオプション、‐‐coverage を使ってみます。コードカバレッジ用のオプションは複数あるようなのですが、‐‐coverageオプションを一つ使えばこれ一個で良きにはからってくれるみたいっす。知らんけど。

“オプション沼(13) コードカバレッジを計測する準備、gcc ‐‐coverageオプション” の続きを読む