C言語」タグアーカイブ

[C言語] switch文の中の変数の定義がエラーとなる

1. 症状

下記のようにswitchブロックの内部で変数宣言をおこなうとコンパイルエラーとなる。

続きを読む

[gcc] ブレイクできないところにブレイクポイントを作る

下記のようにコンパイラの最適化で省略される個所にブレイクポイントを設定できないことがあります。

続きを読む

[C] 自己参照する要素をもつ構造体定義

1. 症状

自己参照する要素を持つ構造体を定義するとコンパイルエラーとなる

1.1. サンプルコード

1.2. エラーメッセージ

続きを読む

[C] 危険なキャスト

危険なキャストをおこなってバグを誘発した例をみつけたのでご紹介します。

不具合の経緯としては

  1. あるグローバル変数をconst修飾子をつけて定義した。
  2. ところがこのグローバル変数のポインタを別のポインタ変数に代入するときに危険なキャスト(const外し)をおこなった。
  3. 代入先のポインタを操作してconst修飾子をつけた(read-onlyの)変数の書き換えを行った。

続きを読む

[gcc] undefined reference to log10

1. 症状

log10() を呼び出すプログラムをコンパイルすると以下のようなエラーが発生する。

続きを読む

[C言語] トライグラフ

trigraph 三文字表記

文字コード(キーボードから直接入力できる文字種)に自然言語(英語圏以外)の制限(混乱)があった時代の名残。

1. 変換例

1.1. 変換前

1.2. 変換後

続きを読む