|
C言語初心者です。
書籍にヘッダファイルの2重インクルードは問題なので、インクルードガードを
するべきだと書かれていますが、2重にインクルードしてみてもコンパイルから
エラーは出ません。
個人的に分割コンパイル時に用意するヘッダファイルには、
1.ソースに必要なヘッダファイルのinclude命令
2.参照される型、マクロの定義
3.参照される関数・変数の外部参照宣言
を含めるようにしています。
2重インクルードは何が問題なのでしょうか?
問題も起こっていないのに愚かな質問とは存じますが、
どなたかご教示くだされば幸甚です。
使用したソースは以下の3ファイルです。
Windows Meで、BorlandC++5.5と、LSIC試食版を使ってコンパイルしてもエラー
がでずに正常にコンパイルされました。
/***tst.c***/
#include <stdio.h>
#include "sub.h"
#define MAX 5
int main( void ) {
char str[ MAX ];
printf( "数字:" );
fgets( str, MAX - 1, stdin );
func( str );
printf( "入力された数字:%d\n", num );
return 0;
}
/***sub.c***/
#include <stdlib.h>
#include "sub.h"
#include "sub.h" //ここでsub.hを2重にインクルード
int num = 0;
void func( char *pc ) {
num = atoi( pc );
}
/***sub.h***/
extern int num;
void func( char *pc );
どうかよろしくお願いします。
|