[OSy] Preprocessing

Vlastimil Babka babka at dsrg.mff.cuni.cz
Fri Nov 7 19:28:25 CET 2008


Fanda Princ wrote:
> Dobry vecer,
>
> mozna mam trosku zmatek v tom jak funguje preprocesor.
>
> Konkretne se chci zeptat, jak je to s definici symbolu DEBUG_MUTEX.
>
> V souboru tests/as1/mutex5/test.c  je radek #define DEBUG_MUTEX 1
> a v souboru, kde mam implementovane mutexy, pouzivam
> #ifdef DEBUG_MUTEX ......... #endif
> pro podmineny preklad kontroly, jestli mutex odemyka ten kdo ho zamkl.
>
> Problemem je, ze pri spusteni testu mutex5 se zkompiluje
> kernel a u mutexu v kodu chybi prave ta cast ohranicena
> direktivou #ifdef DEBUG_MUTEX ...... #endif .
>
> Muj nazor je, ze aby v mem souboru mutex.c bylo definovano makro DEBUG_MUTEX
> tak bych musel naincludovat nejaky header soubor, ve kterem je definice toho
> makra. Myslim si to spravne?
>   
Dobry vecer,

ano, definice DEBUG_MUTEX v test.c skutecne nemuze v tomto pripade
ovlivnit kompilaci vaseho mutex.c. Pri kompilaci test.c vsak ovlivni
preprocesing hlavicky api.h a tedy i mutex.h ktery z nej predpokladam
includujete. V nem tedy muzete pomoci maker ci inline funkci "obalit"
mutexy o debug checking pro konkretni soubor ktery mutexy includuje.
Dalsi moznosti by bylo rict ze bud bude debug mutexy pouzivat cely
kernel nebo nic. Pak muzete napriklad detekovat v Makefile ze se
kompiluje kernel pro tento test a definovat DEBUG_MUTEX globalne flagem
prekladace. Jak bylo receno, podobne upravy se pri integraci testu
pripousti.
Oba naznacene pristupy maji sve pro a proti, a test mutex5 by mel
fungovat v obou dvou.

Vlastimil Babka





More information about the NSWI004 mailing list