前提として,
- main.c
- 再利用できそうな関数を記述した my_lib.c とそのヘッダーファイル my_header.h
- main.c と my_lib.c で共通で使う変数 my_c
があるものとする。このいわゆる「グローバル変数」である my_c の定義,以下のように書かないと,エラーになったり,局所的なファイルになったりする。
XC8
my_header.h
extern char my_c = 'H'; // グローバル変数
void my_init(void); // my_lib.c で記述し,main.c から呼ばれる関数
void my_print(void); // my_lib.c で記述し,main.c から呼ばれる関数 |
|
my_lib.c
#include "my_header.h"
void my_init(void) {
// my_c を使って関数記述
}
void my_print(void) {
// my_c を使って関数記述
} |
|
main.c
#include "my_header.h"
void main(void)
{
// my_c, my_init, my_print を使う
} |
|
XC8の別の方法
my_header.h
// extern char my_c = 'H'; // グローバル変数 これは不要
void my_init(void); // my_lib.c で記述し,main.c から呼ばれる関数
void my_print(void); // my_lib.c で記述し,main.c から呼ばれる関数 |
|
my_lib.c
#include "my_header.h"
char my_c = 'H'; // 実はグローバル変数
void my_init(void) {
// my_c を使って関数記述
}
void my_print(void) {
// my_c を使って関数記述
} |
|
main.c
#include "my_header.h"
extern char my_c; // extern宣言必須
void main(void)
{
// my_c, my_init, my_print を使う
} |
|
XC16
my_header.h
// extern char my_c = 'H'; // グローバル変数 これは不要
void my_init(void); // my_lib.c で記述し,main.c から呼ばれる関数
void my_print(void); // my_lib.c で記述し,main.c から呼ばれる関数 |
|
my_lib.c
#include "my_header.h"
char my_c = 'H'; // 実はグローバル変数
void my_init(void) {
// my_c を使って関数記述
}
void my_print(void) {
// my_c を使って関数記述
} |
|
main.c
// #include "my_header.h" // これが不要
extern char my_c; // extern宣言必須
void main(void)
{
// my_c, my_init, my_print を使う
} |
|
うーむ,わけわからん。。。誰か教えてください!(切実)
0 件のコメント:
コメントを投稿