Z jakiegoś powodu powinienem użyć gcc do kompilacji pliku C, a następnie połączyć się z projektem Visual C++ 2008.Jak skompilować GCC bez _alloca?
(użyłem aktualną wersję gcc: najnowsze cygwin gcc 4.3.4 20090804.)
Ale jest jeden problem: gcc zawsze przeznaczyć dużą tablicę z _alloca,
i VC linker nie może rozwiąż symbol __alloca.
np
int func()
{
int big[10240];
....
}
ten kod sprawia, że zależność _alloca choć nie wywołać funkcję _alloca wyraźnie.
(Sprawy rozmiar tablicy, jeśli zmienię 10240 -.> 128, wszystko ok)
Próbowałem opcji gcc -fno-wbudowanym-alloca lub -fno-wbudowanego polecenia, ale bez powodzenia.
Czy można uniemożliwić korzystanie z GCC _alloca? (lub dostosować próg?)
Dlaczego nie wystarczy użyć 'malloc()' jawnie? –
Nie jest to moje pisane źródło i nieco skomplikowane do edycji. a może oryginalny autor nie chciał kary, by nazwać malloc. – shkim
Celem alloca w tym przypadku jest upewnienie się, że stos jest wystarczająco duży, aby pomieścić tę tablicę. Kompilator Microsoft nie potrzebuje alloca; emituje ten kod sondy stosu bezpośrednio do funkcji. Sonda stosu nie jest potrzebna, gdy mieszkańcy są niewielcy. Co się stanie, jeśli nie użyjesz -ofno-builtin-alloca i -fno-builtin? –