分割コンパイルの初歩
C言語ですが、.hに実装を書くのは避けたほうが良いといわれます。
私は
main.c
define.h
aaa.h
bbb.h
みたいなスタイルでコードを書いていました。
まずdefine.hでグローバル変数や、マクロなどの宣言を
まとめて行い、ほかの.hやmain.cでも使えるようにして
いました。
しかし、以下のような状況のとき、どのように分割すれば
良いのかが分かりません・・・。
たとえば、以下のように、マクロNUM、変数a,bをすべてのファイルで共有して使えるように分割コンパイルするにはどのようにコードを書き直せば良いのでしょうか?
//--------------main.c------------------
#include "define.h"
#include "aaa.h"
#include "bbb.h"
int main( void ){
printf("%d", a);
printf("%d", b);
printf("%d", NUM);
aaa();
bbb();
return 0;
}
//------------define.h------------------
#define NUM 100
int a = 10;
int b = 20;
void aaa( void );
void bbb( void );
//------------aaa.h------------------
void aaa( void ){
printf("%d", a);
printf("%d", b);
printf("%d", NUM);
}
//------------bbb.h------------------
void bbb( void ){
printf("%d", a);
printf("%d", b);
printf("%d", NUM);
}
補足
分割する基準が分からないのです。