2009-09-08 20 views
5

Nel seguente esempio:errore utilizzando limitare parola chiave

void foo (double *ptr) 
{ 
    const double * restrict const restr_ptr=ptr; 
} 

ottengo questo errore:

error: expected a ";"  const double * restrict const restr_ptr=ptr; 
                ^

compilo con -STD = C99, utilizzando gcc 3.4

tutte le idee?

+0

Compila per me bene. Hai una versione recente di GCC? –

+0

Questo codice viene compilato per me su Sun C 5.8 e GCC 3.4.6. Comeau online si lamenta solo della dichiarazione di variabili inutilizzate. Si prega di fornire maggiori dettagli sul proprio ambiente. –

+0

... ma Comeau era in modalità C99. Quando lo metto in modalità C++, si lamenta della stessa cosa. –

risposta

9

In C++, restrict non è una parola chiave (ad eccezione di Microsoft extensions). Non significa ciò che fa in C. Sembra che tu abbia provato ad applicare la modalità C99 al tuo compilatore C++. Usa un compilatore C per compilare il codice C e usa un compilatore C++ per compilare C++. Nessuna delle due lingue è un sottoinsieme dell'altro.

+0

Agh, questo spiega. Non riesco a compilare utilizzando il compilatore C poiché utilizzo le funzioni C++ in cui viene utilizzato il limite. Qual è la soluzione, se presente? – vehomzzz

+4

Prova '__restrict'. Sembra che sia un'estensione GCC e un'estensione Microsoft. Considerare l'astrazione con una macro così non GCC, i compilatori non MS non soffocano su di esso. –

+0

__restrict ha fatto il trucco .. grazie – vehomzzz

Problemi correlati