|
Читая трупа страуса видим? что нужно писать так:
(рассмотрим все это сразу для "убого" пика, чтоб нагляднее было.
Запихнем переменную в банк1)
/*-------- file aaa.h*/
#ifndef DEF_AAA
#define LOC_A bank1
extern int LOC_A a;
#define DEF_AAA
#endif
/*-------- file aaa.c*/
#include "aaa.h"
int LOC_A a;
void func(){
....
Делаю след. образом. И кто раскажет в чем я все же заблуждаюсь,
почему низя помещать определение в *.h файл?
Совмещаем описание и определение в одном месте.
/*---------- Файл общий, суется везде xxx.h*/
#ifndef DEF_XXX
#ifdef DEF_EXTERN
#define External
#else
#define External extern
#endif
#define DEF_XXX
#endif
/*------- file aaa.h*/
#ifndef DEF_AAA
#include "xxx.h"
External int bank1 a;
#define DEF_AAA
#endif
/*-------- file aaa.c*/
#include "aaa.h"
void func(){
....
/*-------- file bbb.c*/
#define DEF_EXTERN
#include "aaa.h"
void main(){
....
На мой взгляд данный подход очень удобен и имеет право на жизнь.
В первом случае был введен лишний #define LOC_A,
во втором случае обошлись без него.
С удовольствием выслушаю аргументы против.
С уважением, Иван.
E-mail: info@telesys.ru