creare errore di compilazione

Ciao a tutti ragazzi, pensavo ai file di configurazione di certi programmi e mi é venuta in mente una cosa malsana ad esempio prendiamo in considerazione il file di configurazione del software multiwii (software per multicotteri) e mi é venuto in mente che per ogni settaggio di motori ci sono dei define da commentare o decommentare, ma se io ne decommento 2 dove é permessa solo una scelta nel compilare ovviamente verranno degli errori a seconda del codice ma é possibile mettere degli errori personalizzati?
Del tipo una serie di if del compilatore "#if" che se verificati printano nella console di debug qualcosa del tipo "errore non puoi fare la scelta x e y assieme"

Spero di essermi spiegato :wink:

Certo che puoi:

#if CONDIZIONE
..... codice buono
#elif SECONDA_CONDIZIONE
..... codice buono
#else
#error MESSAGGIO DI ERRORE
#endif

superlol:
Del tipo una serie di if del compilatore "#if" che se verificati printano nella console di debug qualcosa del tipo "errore non puoi fare la scelta x e y assieme"

Il GCC consente di inserire dei messaggi di warning e di errore, con blocco della compilazione, che vengono visualizzati durante la compilazione.
Gli avvisi tramite la direttiva "#warning quellochetipare"
Gli errori tramite la direttiva "#error quellochetipare"

Basta che verifichi le varie define abilitate e in caso di incompatibilità visualizzi il relativo messaggio d'avviso oppure generi l'errore con il conseguente blocco della compilazione.
Per vedere le warning nell'IDE di Arduino devi abilitare il modo "verbose" per la compilazione, le #error vengono gestite anche senza modo verbose e causano l'ìmmediato stop della compilazione con relativo messaggio che appare nella finestra delle notifiche di Arduino.

Grazie mille, ma nel caso di un codice in genere tutti gli if di compilazione (non so il nome tecnico) sarebbero passati dal pre-compilatore (che elimina appunto i commenti e risolve queste cose se non erro) quindi la compilazione interrompendosi mostrerebbe solo quegli errori o anche errori relativi al resto del codice (presenti nel caso di una misconfiguration :stuck_out_tongue: )?

superlol:
quindi la compilazione interrompendosi mostrerebbe solo quegli errori o anche errori relativi al resto del codice (presenti nel caso di una misconfiguration :stuck_out_tongue: )?

Se usi la #error il processo di compilazione si interrompe alla prima che incontra, ovviamente gestita tramite #if, se usi la #warning ti appaiano tutte quante in mezzo ai vari messaggi del compilatore, le riconosci facilmente perché l'IDE le scrive in rosso mentre gli altri messaggi sono in bianco.

Perfetto grazie mille, ora mi metto ad ideare una cosuccia :wink: