Comment flasher une erreur si une macro n’est pas définie dans le programme

Adwait

Comment flasher une erreur si une macro n’est pas définie dans le programme


Je veux que mon programme clignote une erreur de temps de compilation comme « LCD_PORT non défini » s’il n’est pas défini dans le programme lui-même. Pour cela j’ai modifié le fichier d’en-tête comme ceci

 . 
 . 
 . 
 #if LCD_IO_MODE 
 #ifndef  LCD_PORT #error  LCD_PORT not defined //(eg #define LCD_PORT PORTA/B/C/D) 
 #endif 

 #define  LCD_DATA0_PORT LCD_PORT /**< port for 4bit data bit 0 */ 
 #define  LCD_DATA1_PORT LCD_PORT /**< port for 4bit data bit 1 */ 
 . 
 . 
 . 
 ... 

Mais même après avoir défini le LCD_PORT (comme dans le programme suivant), il clignote l’erreur.

 #include   <avr/io.h> 
 #include   <lcd.h> 

 #define  LCD_PORT PORTA int  main ( void ) 
 { lcd_init ( LCD_DISP_ON_CURSOR ); lcd_home (); lcd_gotoxy ( 0 , 4 ); lcd_puts ( "Hello world!!" ); 
 } 

jippie

La modification des fichiers d’en-tête de distribution est une mauvaise pratique. Pourquoi ne pas déplacer ces lignes dans votre propre code source?

Réponses


 PeterJ

Le problème est probablement dû au fait que le préprocesseur fonctionne de manière séquentielle, vous devez donc effectuer la définition avant l’inclusion. Essayez ce qui suit:

 #include   <avr/io.h> 
 #define  LCD_PORT PORTA #include   <lcd.h> 

Passant

Exactement. L’en-tête inclus est traité avant que la # définition ne soit atteinte.

 

#(une, #pas, comment, dans, définie, Erreur, flasher, Le, macro, n’est, Programme, si

 

google

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *