fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. typedef struct {
  5. unsigned v;
  6. } GPIO_typedef;
  7.  
  8.  
  9. #define PORTA ((GPIO_typedef*)0x04)
  10. #define PORTB ((GPIO_typedef*)0x08)
  11.  
  12.  
  13. #define MKSTR2(TOSTR) #TOSTR
  14. #define MKSTR(TOSTR) MKSTR2(TOSTR)[19]
  15.  
  16. template< char ch >
  17. inline
  18. unsigned getPortFlag()
  19. {
  20. //static_assert(false, "not implemented for this target");
  21. return 0;
  22. }
  23.  
  24. template< >
  25. inline
  26. unsigned getPortFlag< MKSTR(PORTA) >()
  27. {
  28. static_assert('4' == MKSTR(PORTA), "port A?");
  29. return 1;
  30. }
  31.  
  32.  
  33.  
  34. int main() {
  35. // your code goes here
  36.  
  37. cout<<"Port A flag: "<<getPortFlag<MKSTR(PORTA)>()<<"\n";
  38. cout<<"Port B flag: "<<getPortFlag<MKSTR(PORTB)>()<<"\n";
  39. return 0;
  40. }
  41.  
  42.  
  43.  
Success #stdin #stdout 0s 15232KB
stdin
Standard input is empty
stdout
Port A flag: 1
Port B flag: 0