Ну, кому еще полемика не надоела?(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено abivan 03 января 2003 г. 18:17
В ответ на: Полу-Off о соглашениях в языке Си (+) отправлено Вопрос 03 января 2003 г. 13:41

Читая трупа страуса видим? что нужно писать так:
(рассмотрим все это сразу для "убого" пика, чтоб нагляднее было.
Запихнем переменную в банк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