「ローベルのC++入門講座」という本を読んでいるのですが、
その中でヘッダーファイルの2重インクルードを回避するマクロとして、
----------------------------------------------------------------
#ifndef REDEF1_H_20070101_1138_JOIE93UL_INCLUDED_
#define REDEF1_H_20070101_1138_JOIE93UL_INCLUDED_
const int N = 10;
・
・
・
#endif
----------------------------------------------------------------
というサンプルがでてくるのですが、
「REDEF1_H_20070101_1138_JOIE93UL_INCLUDED_」
の意味がよくわからないです。
おそらく、
「REDEF1_H」はファイル名で、
「20070101_1138」はredef1.hの作成日時か更新日時で
「INCLUDED」は「インクルードされている」の意味だと思う
のですが、
「JOIE93UL」が何を意味するのかがさっぱりです。
さほど重要なことではなさそうですが、なんだか気持ちが悪いので
どなたか教えて頂ければ幸いです
No.2ベストアンサー
- 回答日時:
識別子名は、実は「重複さえしなければ、何でもOK」なのです。
#define SUZUMIYA_HARUHI_DAISUKI
でも
#define HARUHI_KAWAIIYO_HARUHI
でも、何でも構いません。
ですが「適当に決めると、別のファイルの定義と衝突する可能性がある」ので「ファイル名や作成日を入れるなど、適当に決めても、他と重複する確率がゼロに近くなる」ようにします。
ですので
>「REDEF1_H」はファイル名で、
>「20070101_1138」はredef1.hの作成日時か更新日時で
>「INCLUDED」は「インクルードされている」の意味だと思う
の部分は「適当に決めても他と重複しないようにする為」に、こうなっているだけなのです。
つまり、この部分は「ある規則に従って付けたので、なんか意味ありげだけど、実は意味は無い」のです。
でも、これだけでは「同じファイル名で、同じ時刻に、別の人が、別のヘッダーファイルを作る可能性」がゼロじゃないです。
そこで「他と絶対に重複しないようにする決定打」として「書いた本人だけしか意味が判らない文字列」も追加したのでしょう。
それが
>「JOIE93UL」が何を意味するのかがさっぱりです。
です。
「書いた本人だけしか意味が判らない文字列」ならば「他人が同じ文字列を使う事は無い」ので、結果的に「他と絶対に重複しない」でしょう。
そう言う訳で「JOIE93UL」の意味を知ってるのは書いた本人だけで、貴方やここの回答者は、その意味が判らなくて当然です。
そして「それが何を意味するのか知っても、何の影響もない」ので、貴方がそれを知る必要はありません。
貴方が「SUZUMIYA_HARUHI_DAISUKI」の意味が判らなくたって、ちゃんとコンパイルできれば何の問題もありませんよね?つまり、そういうことです。
No.3
- 回答日時:
> __ファイル名 みたいな感じにしますが
C言語ではアンダーバーで始まる識別子は、
規格や処理系が使用する、「予約済み識別子」に
指定されているので、これを使用した識別子は
規格上その動作が未定義になります。
#現存する殆どの処理系では問題ないでしょうが、
#わざわざつける物でもないと思います。
> 「JOIE93UL」が何を意味するのかがさっぱりです。
書いた人に聞いてください。
No2の人が書いているように、
重複していなければなんでも良いので、
何を意図して書いたかは、書いた人にしかわからないです。
No.1
- 回答日時:
これは単なる例であり、同一プロジェクト内で重複しないなら何でも
かまいません。
通常は、 __ファイル名 みたいな感じにしますが特に決まりがあるわけ
ではありません。
ただし同じプロジェクト内では共通のルールで指定した方がいいでしょう。
#ifndef は指定された名前のマクロ(#define で登録した別名)が
なければ #endif までを実行するプリプロセッサ(ディレクティブ)です。
参考URL:http://www11.plala.or.jp/studyhall/cpp/include.h …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 P210 carry には、マガジンが2つ装着される(マガジンが2つ装着できる)のでしょうか? 3 2023/02/06 14:57
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- 北アメリカ P210 carry には、マガジンが2つ装着される(装着できる)のでしょうか? 1 2023/02/07 14:39
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- PHP PHPを使って、別サイトの一部を取得して表示したいのです。。 1 2023/01/18 21:45
- 英語 Human studies using PRF for bone regeneration and 3 2022/12/29 17:30
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- その他(プログラミング・Web制作) どうしてもエラーが解決できません。 1 2022/07/23 04:32
- 病院・検査 初期の胃がん 4 2023/05/08 05:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IIS ログの見方を教えて下さい
-
読解力がなくて文章がわかりま...
-
ばみばみばみーん の意味を教え...
-
倍数(1.5倍、2倍)が分からな...
-
molto ritの意味を教えてください
-
中国語 古文
-
1、「それからというもの」はど...
-
「伝えきれない」意味が分から...
-
オタク用語?の〇〇ムーブとは...
-
吸光光度計のAbsと K*Absはそれ...
-
説得させられるの意味を教えて...
-
「注意散漫」の意味
-
スカす の意味
-
やんちゃくちゃぼうずヤンチャ...
-
普通に可愛いというのは10点中...
-
モグリ
-
ほんとになんでうごくかわからない
-
また明日って 普通にまた明日会...
-
未満の意味ってなんですか? 21...
-
現に慎む・厳に慎む
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
molto ritの意味を教えてください
-
オタク用語?の〇〇ムーブとは...
-
倍数(1.5倍、2倍)が分からな...
-
スカす の意味
-
心手期せずしてとはどういう意...
-
ハイキュー!! 1巻(1話)の影山の...
-
他方当事者 とは、どう言う意味...
-
スカしてるとはどういう意味で...
-
WindowsのCapsLock(キャップス...
-
『サシ』ってなんですか?
-
1、「それからというもの」はど...
-
また明日って 普通にまた明日会...
-
「天地がひっくりかえってもあ...
-
「注意散漫」の意味
-
Googleマップのところどころに...
-
旅の夜風
-
普通に可愛いというのは10点中...
-
CPU"を、i7−8700からi9−9900に...
-
女性からLINEで『また明日ね』...
-
「ごはんに連れてってください...
おすすめ情報