Alternatywa dyrektywy #warning preprocesora AVR GCC?

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
c4v2
Użytkownik
Posty: 426
Rejestracja: 22 lis 2005, 15:14
Lokalizacja: z przed monitora

Alternatywa dyrektywy #warning preprocesora AVR GCC?

Post autor: c4v2 » 21 sie 2016, 20:18

Czy Szanowni Forumowicze znają jakiś sposób na przekierowanie wartości makra zdefiniowanego dyrektywą #define do okna wyników kompilacji w AVR Studio v4.17 współpracującego z kompilatorem C z WinAVR-20100110.
Przy kompilacji warunkowej gdy makro przyjmuje różne wartości stosowanie dyrektywy #warning (akceptuje jedynie łańcuch znakowy) jest uciążliwe. Przykład:

Kod: Zaznacz cały

#undef ADPS
#define ADPS (_BV(ADPS0))
#if (F_CPU>>1)<50000
  #warning ADC clock frequency < 50kHz, require ADC clock frequency between 50kHz and 200kHz
#endif
#if ((F_CPU>>1)>200000)
  #undef ADPS
  #define ADPS (_BV(ADPS1))
#endif
#if (F_CPU>>2)>200000
  #undef ADPS 
  #define ADPS (_BV(ADPS1)|_BV(ADPS0))
#endif
#if (F_CPU>>3)>200000
  #undef ADPS 
  #define ADPS (_BV(ADPS2))
#endif
#if (F_CPU>>4)>200000
  #undef ADPS 
  #define ADPS (_BV(ADPS2)|_BV(ADPS0))
#endif
#if (F_CPU>>5)>200000
  #undef ADPS 
  #define ADPS (_BV(ADPS2)|_BV(ADPS1))
#endif
#if (F_CPU>>6)>200000
  #undef ADPS 
  #define ADPS (_BV(ADPS2)|_BV(ADPS1)|_BV(ADPS0))                     
#endif 

#if (ADPS)==1
  #warning ADPS: '_BV(ADPS0)  //Prescale 2'
#endif
#if (ADPS)==2
  #warning ADPS: '_BV(ADPS1)  //Prescale 4'
#endif
#if (ADPS)==3
  #warning ADPS: '_BV(ADPS1)|_BV(ADPS0)  //Prescale 8'
#endif
#if (ADPS)==4
  #warning ADPS: '_BV(ADPS2) //Prescale 16'
#endif
#if (ADPS)==5
  #warning ADPS: '_BV(ADPS2)|_BV(ADPS0)  //Prescale 32'
#endif
#if (ADPS)==6
  #warning ADPS: '_BV(ADPS2)|_BV(ADPS1)  //Prescale 64'
#endif
#if (ADPS)==7
  #warning ADPS: '_BV(ADPS2)|_BV(ADPS1)|_BV(ADPS0) //Prescale 128'
#endif 
Dla każdej z możliwych wartości makra ADPS trzeba definiować oddzielny komunikat.
Czy jest jakiś inny sposób by można było bezpośrednio wyświetlić w oknie wyników kompilacji wartości makra ADPS w postaci wyliczonej lub niewyliczonej (rozwiniętej).

ODPOWIEDZ