Vorrei utilizzare il seguente preprocessore definisce:Come rimuovo un cast in stile C da #define in modo da poterlo utilizzare in un # prep del preprocessore?
[intestazione 3rd party (non può modificare)]
#define SWCI_VERSION_MAJOR (unsigned char) 4
#define SWCI_VERSION_MINOR (unsigned char) 16
Quando sono confrontati in questo modo:
[mia implementazione]
#if SWCI_VERSION_MAJOR >= 4 && SWCI_VERSION_MINOR >= 16
Allora ottengo:
irreversibile C1017 errore: non valida integer espressione costante
ho notato che se io li definisco senza (unsigned char) sarà accettata la direttiva, ma non ho accesso ai definisce quindi vorrei per risolvere il problema se possibile.
Possibile duplicato di [ciò che fa l'errore del compilatore "mancante operatore binario prima di token" significa?] (Http://stackoverflow.com/questions/21338385/what-does-the-compiler-error- missing-binary-operator-before-token-mean) – BoBTFish
Si noti che il messaggio di errore è diverso da http://stackoverflow.com/q/21338385/1171191 perché è un compilatore diverso, ma l'errore è lo stesso: si può ' t cast in un '# if', perché non succede nel preprocessore, come spiega la risposta di AShelly. – BoBTFish
@ j4nSolo se lo paragoni come hai detto tu, cosa ti impedisce di definire i MACRO senza (char unsigned)? –