Se ho un codice scritto in C# racchiuso in una direttiva #if
, quale (eventuale) precedenza viene applicata a qualsiasi operatore booleano che potrebbe essere utilizzato in tale direttiva?Qual è la precedenza degli operatori nelle direttive per il preprocessore C#?
In altre parole:
#if DEBUG || MYTEST && PLATFORM_WINDOWS
// ... Some code here
#endif
Sarà che essere semplicemente valutati da sinistra a destra, come
#if (DEBUG || MYTEST) && PLATFORM_WINDOWS
E allo stesso modo, sarebbe
#if PLATFORM_WINDOWS && DEBUG || MYTEST
essere valutata come
#if (PLATFORM_WINDOWS && DEBUG) || MYTEST
Oppure esiste un ordine di precedenza per & & vs ||?
Modifica: Per essere chiari, sono ben consapevole di poter eseguire il codice personalmente per testarlo, e lo sono. Sto cercando una risposta che mi doni qualcosa di ufficiale - un riferimento alla documentazione o simili, che possa darmi una comprensione più profonda della meccanica di fondo delle direttive. Mi piacerebbe sapere se esiste un comportamento specifico o se questo è puramente qualcosa che non è definito.
La parentesi IMO dovrebbe essere utilizzata comunque, per evitare di pensare in alto e tale confusione – thumbmunkeys
Perché non eseguire alcuni test e dirci?Questo è qualcosa che potresti facilmente scoprire da solo. –
La soluzione semplice, che ha anche enormi benefici di leggibilità, è quella di limitarsi a parentesi da soli. – qaphla