ヘッダーファイルを使用していていくつか疑問に思った点があるので質問させて頂きました.例として以下ようなプログラムを記述しました.
作業環境はVS Express 2013 for windows desktopです.
C++
1// Header1 2#ifndef __Header1_h__ 3#define __Header1_h__ 4 5#define ARRAY_SIZE 5 6#include <string> 7using std::string; 8 9 10extern void STRFunc1(string filename); 11 12#endif
C++
1// Header2 2#ifndef __Header2_h__ 3#define __Header2_h__ 4 5#include <string> 6using std::string; 7 8 9extern void STRFunc2(string username); 10extern void ARRAYFunc3(int point[ARRAY_SIZE]) 11 12#endif
C++
1// Main関数 2#include "Header1.h" 3#include "Header2.h" 4 5int main (void){ 6 7 ------ 8 9}
①二つのヘッダファイルをインクルードするので
「#include <string>」「using std::string」
がそれぞれ二回実行されることになるのですが問題はないのでしょうか.
②"Header1.h"で定義した
「ARRAY_SIZE 5」
を"Header2.h"で使用できるのはなぜでしょうか.
メイン関数では先に"Header1.h"を展開するので"Header2.h"で記述した「ARRAY_SIZE」が問題なく動作することは理解できます.しかし"Header2.h"単体で見た場合,「ARRAY_SIZE」の定義がないのでエラーが出るのではないのかと考えました.
初歩的な内容ですが,回答よろしくお願いします.
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/12 03:13