C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。
Q&A
解決済
2回答
1528閲覧
総合スコア13
0グッド
0クリップ
投稿2020/05/24 12:13
0
つい最近C++を始めた者です。 この前までJAVAかじっていたのである程度の文法やオブジェクト指向などは多少はわかるのですが、今日#ifndef、#define、#endifマクロでの2重定義の防止を覚えたのですが、この多重定義されている状況とはどんな状況で、多重定義されていると実際どんな問題が発生するのでしょうか。 できるだけ詳しく教えてくれると助かります。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
回答2件
ベストアンサー
C++では、#includeでのヘッダの取り込みは、プリプロセッサといって、C++言語とは違うレベルで処理してしまいます。で、#includeは指定のファイルをそこに展開するだけなので、何も対策していないと同じ宣言が複数になってしまい、コンパイルエラーとなります。
#include
(なお、今どきのコンパイラでは#pragma onceという指定も可能です)
#pragma once
投稿2020/05/24 13:19
総合スコア146832
この多重定義されている状況とはどんな状況で、
たとえばこの↓ように、同じものが複数ある状況 class Main {}; class Main {};
多重定義されていると実際どんな問題が発生するのでしょうか。
大抵コンパイル・エラー。
投稿2020/05/24 12:27
総合スコア16612
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
#ifndef、#define、#endifマクロについて
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。