C言語」タグアーカイブ

[C言語] enum型 の サイズ

  • [Q] C言語において enum 型のサイズは決まっているか?
  • [A] 決まっていない。

enum型はsizeof(int)を超えることはない。

Microsoft Visual Studio において enum型 は int で固定である。

一方, 処理系(IAR Embedded Workbench, CodeWarrierなど)によってはenum定数で保持に必要な最小の型を使用する。範囲指定がなければ unsigned よりも signed を優先する。

[C/C++] 内部結合と外部結合

  • 内部結合 : Internal Linkage
  • 外部結合 : External Linkage

ファイルスコープのオブジェクト定義(いわゆるグローバル変数定義)

  static 記憶域指定子なし extern
C言語 内部結合定義 外部結合定義 仕様なし
C++ 内部結合定義 非const: 外部結合定義
const: 内部結合定義
外部結合定義

続きを読む

[C] グローバル変数の宣言と定義

(1) 外部定義 / external definition

定義と初期化

(2) 外部宣言 / extern declaration

翻訳単位外(ファイルの外)で定義したグローバル変数を参照する。メモリは割り当てない。

(3) 仮定義 / tentative definition

どこかに外部定義があれば外部宣言としてふるまい、なければ外部定義としてふるまう。
したがって同じ名前の仮定義が複数存在しても、ひとつのメモリ領域を参照する。

上記のソースコードだけでは『定義』であるか『宣言』であるか確定できない。

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

1. 症状

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

続きを読む

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

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

続きを読む