• ベストアンサー

#defineでの型定義について

typedefと同様に#defineでも型定義できると聞いて行いましたがコンパイルエラーが出てうまくいきませんでした。どうすればいいでしょうか? typedef unsigned int Unit //OK #deifine Unit unsigned int //NG

質問者が選んだベストアンサー

  • ベストアンサー
  • shige_70
  • ベストアンサー率17% (168/946)
回答No.4

#define は、型定義ではありません。 簡単に言えば、文字列を置き換えるだけです。(本当はそれだけじゃないですが) > #define Unit unsigned int; と書くと、"Unit" を "unsigned int;" に置き換えなさい、と言う意味ですから、 > Unit c; は、 unsigned int; c; と書いたのと同じです、 ここまで書けば、何がおかしかったか分かりますよね?

yukikundesuyo
質問者

お礼

;(セミコロン)が余計だったのですね。

すると、全ての回答が全文表示されます。

その他の回答 (4)

回答No.5

#define はマクロ定義をします。 #define Uint unsigned int //符号なし整数型 と書けば、それ以降のUint は unsigned int と解釈されます。 マクロを無効にするには#undef、マクロが定義されているかどうかで処理を分けたい時は、#ifdef、#else、#endifを使います。

すると、全ての回答が全文表示されます。
回答No.3

どんなソースでどんなエラーがでましたか? それがないと判断しようがありません。

すると、全ての回答が全文表示されます。
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

 具体的にどのような行でどのようなコンパイルエラーが出るのかを明記した方が良いと思う。後、コンパイラ名と。  ひょっとしたら全然違う理由でエラーになっているかも知れんし。例えば、Uintという識別詞を別の意味(関数名、変数名など)で使っている部分があるなど。

yukikundesuyo
質問者

補足

コンパイルエラーは「未定義のシンボル c(関数 main )」と表示されます。 コンパイラはCPad for Borland C++ Ver2.3.1を使用しています。 #include<stdio.h> #define Unit unsigned int; //typedef unsigned int Unit; void main(void) { Unit c;//コンパイルエラー箇所 }

すると、全ての回答が全文表示されます。
回答No.1

それだけをみる限り、単なるミスタイプとしか判断できません。 deifine ?

yukikundesuyo
質問者

補足

#defineにしても結果は同じでした。

すると、全ての回答が全文表示されます。

関連するQ&A