C'è un modo per indicare al compilatore che si conosce il valore di una particolare variabile deve essere all'interno di un determinato intervallo in un determinato punto del codice, per aiutare il compilatore ad ottimizzare? Sto scrivendo una libreria che rende possibile conoscere l'intervallo di alcune variabili in fase di compilazione, e sarebbe bello se potesse in qualche modo comunicare queste informazioni al compilatore in modo che il compilatore potesse usarlo per l'ottimizzazione. Mi piacerebbe aggiungere il supporto per qualsiasi compilatore in cui funzionerebbe anche se non fosse possibile far funzionare tutti (sembra il tipo di cosa che alcuni compilatori potrebbero avere come estensione, ma non ho trovato qualsiasi). So che potrei scrivere qualcosa del genere:Come comunicare le informazioni sull'intervallo al compilatore C++?
if(x < COMPILE_TIME_MIN or x > COMPILE_TIME_MAX)
return;
// compiler will assume for code below that x is in range COMPILE_TIME_MIN..COMPILE_TIME_MAX
Ma questo è un controllo di runtime. Forse c'è qualche trucco per fare in modo che il compilatore assuma l'intervallo senza il controllo?
Avete qualche idea su che tipo di ottimizzazione sarebbe utile? –
Se si utilizzano i modelli, è possibile eseguire effettivamente il tempo di compilazione controllando se tutte le informazioni sono note al momento della compilazione. –
Stai usando la frase "il compilatore", ma non ci dici mai quale. Presumibilmente intendi qualche versione di g ++ o Visual C++, ma non è chiaro. L'ottimizzazione in generale non è affrontata dallo standard, quindi tutto ciò che si potrebbe fare qui è specifico dell'implementazione. –