Per qualche motivo, dovrei usare gcc per compilare un file C, quindi collegarlo al progetto Visual C++ 2008.Come compilare GCC senza _alloca?
(ho usato l'attuale ultima versione gcc: gcc Cygwin 4.3.4 20090804.)
ma c'è un problema: gcc assegnare sempre un grande array con _alloca,
e VC linker non ci riesce risolvi il simbolo __alloca.
per esempio,
int func()
{
int big[10240];
....
}
questo codice rende la dipendenza _alloca anche se non ho chiamato la funzione _alloca esplicitamente.
(le dimensioni contano serie se cambio 10240 -.> 128, tutto ok)
ho cercato opzione gcc -fno-builtin-alloca o -fno-incorporato, ma senza fortuna.
E 'possibile fare in modo che gcc non usi _alloca? (o regolare la soglia?)
Perché non basta usare 'malloc()' in modo esplicito? –
Non è la mia fonte scritta e piuttosto complessa da modificare. e forse l'autore originale non voleva che la penalità chiamasse malloc. – shkim
Lo scopo di alloca in questo caso è assicurarsi che lo stack sia abbastanza grande da contenere questo array. Il compilatore Microsoft non ha bisogno di alloca; emette questo codice sonda stack direttamente nella funzione. La sonda stack non è necessaria quando i locali sono piccoli. Cosa succede se non usi -fno-builtin-alloca e -fno-builtin? –