Pour une raison quelconque, je devrais utiliser gcc pour compiler un fichier C, puis lier le projet Visual C++ 2008.Comment compiler GCC sans _alloca?
(j'ai utilisé la dernière version gcc actuelle: gcc Cygwin 4.3.4 20090804.)
Mais il y a un problème: gcc toujours allouer un grand tableau avec _alloca,
et éditeur de liens VC ne peux pas résoudre le symbole __alloca.
par exemple,
int func()
{
int big[10240];
....
}
ce code rend la dépendance _alloca bien que je ne l'ai pas appeler la fonction _alloca explicitement.
(questions de taille de tableau si je change 10240 -.> 128, tout est ok)
J'ai essayé gcc option -fno-builtin-alloca ou -fno-builtin, mais pas de chance.
Est-il possible de faire en sorte que gcc n'utilise pas _alloca? (ou ajuster le seuil?)
Pourquoi ne pas simplement utiliser 'malloc()' explicitement? –
Ce n'est pas ma source écrite et quelque peu complexe à éditer. et peut-être que l'auteur original ne voulait pas que la pénalité appelle malloc. – shkim
Le but de alloca dans ce cas est de s'assurer que la pile est assez grande pour contenir ce tableau. Le compilateur Microsoft n'a pas besoin d'alloca; il émet ce code de sonde de pile directement dans la fonction. La sonde de cheminée n'est pas nécessaire lorsque les locaux sont petits. Que se passe-t-il si vous n'utilisez pas -fno-builtin-alloca et -fno-builtin? –