10代と話して驚いたこと

タイトルの通りです。
C++のtypedefのスコープは、どのように定義されているのですか?

ぐぐってもなかなか見つからなくて、ご存知の方がいらっしゃいましたら教えていただきたく思います。

A 回答 (3件)

#2の方も書かれているように、普通の型と同じScopeになりますので、


class scopeやnamespace scope等でも宣言可能です。

定義という意味では、
仕様書(ISO/IEC14882:2003、またはJIS X3014)の「7.1.3 The typedef specifier」、
「Within the scope of its declaration, ....」の後くらいをどうぞ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
なるほど、通常の型と同じくClass Scopeや、Namespace Scopeになるのですね。

本当は仕様書を読むのがよいのですが、仕様書を持っていなくて。
一応、大学の図書館に頼んであるので届いたら読んでみます。

お礼日時:2007/01/22 22:49

ANo1> 『typedef』のスコープはファイル単位です。



間違いではないが正確ではない。
通常の変数等と同じく、ブロック内ならブロック・スコープ、
ブロック外ならファイル・スコープとなるはず。
    • good
    • 0

★『typedef』をどこで宣言していますか?


・『typedef』のスコープはファイル単位です。
・ヘッダファイルに記述していて、ソースファイルでそのヘッダを include していれば
 そのソースファイルのみしか有効になりません。
・だから、Windows.h ヘッダにもたくさんの『typedef』の宣言がありますが、それを
 利用するには必ず『Windows.h』をインクルードするのです。
・よって、インクルードしたファイルがスコープということです。
・また『typedef』で再定義された型を使用する前に記述します。
・こうしないと、エラーとか、警告メッセージが出ます。

最後に:
・『定義』と『宣言』のことばの区別が難しいですね。
・『定義』は関数や変数の実体の事です。
・『宣言』は関数のプロトタイプ宣言やグローバル変数の宣言などという使い方をします。
・ことばの問題ですが『typedef』は『型』の再定義と表現しますが、実際には新しい型を
 宣言(作る)します。
・以上。おわり。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報