2013-08-24 2 views
2

Lorsque je compile le code:Avertissement lors de la compilation avec clang ++

#include <iostream> 
#include <string.h> 

using namespace std; 

int main(void) { 

    string m1; 

    cout<< "enter your name: "<<endl; 
    getline(cin,m1); 

    cout << "Your name is: " << m1 << endl; 

    return EXIT_SUCCESS; 
} 

Il donne l'avertissement suivant:

type de symbole `_main' changé 32-512 en> C: \ Users \ KDesktop \ AppData \ local \ Temp \ cc7XPBuL.o

En second lieu, le compilateur ne génère un fichier .exe, mais chaque fois que je le lance, le programme se bloque immédiatement. Quelqu'un peut-il m'aider pour ce problème.

Merci

+0

a) Veuillez utiliser '#include ' et non string.h b) Soit simplement 'return 0;' soit '#include ' pour définir EXIT_SUCCESS. –

+2

c) Fixez votre indentation – Borgleader

+1

Et votre 'main' n'est pas déclarée correctement malgré tout. Par C++ § 3.6.1 'main' a deux déclarations définies autorisées par la norme:' int main() 'et' int main (int argc, char * argv []) '. Tout le reste est non standard. – WhozCraig

Répondre

0

Votre chaîne d'outils est obsolète. Les anciennes versions de LLVM utilisaient la mauvaise valeur pour le type de symbole de fonction; le bug a été corrigé à la fin de 2010. Voici le rapport de bug: http://llvm.org/bugs/show_bug.cgi?id=8320

Vous devriez mettre à jour votre LLVM; le problème va disparaître.

+0

Je suis déjà en train d'utiliser LLVM 2.8. Je vais mettre à jour à 3.3 dès que possible. Pouvez-vous me dire pourquoi le fichier .exe ne fonctionne pas? – ConsistentProgrammer

+0

Aucune idée, mais cela a probablement quelque chose à voir avec l'ancien toolchain. Vous pourriez, par exemple, être lié à la mauvaise bibliothèque d'exécution. – nneonneo

Questions connexes