7
votes

Erreur C ++ Compiler C4430 "C ++ ne prend pas en charge par défaut Int"

salut im essayant de définir un alias appelé Ushort.

// Demonstrates typedef keyword
#include <iostream>

typedef unsigned short int USHORT;  // typedef defined

main() {
    USHORT  Width = 5;
    USHORT Length;
    Length = 10;
    USHORT Area  = Width * Length;
    std::cout << "Width:" << Width << "\n";
    std::cout << "Length: "  << Length << std::endl;
    std::cout << "Area: " << Area;
}


3 commentaires

Quelle ligne est l'erreur sur ????


Il est indiqué que l'erreur est à la ligne 8 ou autour de la ligne 8. Utilisation de Visual Studio 2013 Express


Remarque: la plupart des compilateurs signalent à la ligne, le message d'erreur est originaire de, où le compilateur pointe-t-il dans votre exemple?


3 Réponses :


12
votes

Cela n'a rien à voir avec votre Typedef . Le problème est que vous n'avez pas donné de type de retour pour principal : xxx

une fonction doit avoir un type de retour. La fonction principale doit renvoyer int .


5 commentaires

Il suffit d'ajouter un retour de 0 à la fin de la principale, a toujours le même problème.


@ReHannaqvi Vous devez dire que le type de retour est int . Voir l'exemple que j'ai donné.


ok merci mate fonctionne maintenant. Désolé, je suis nouveau à C ++ lol BTW, je suis juste curieux, est la syntaxe lors de la codage en C ++ avec un éditeur de texte différent de coder dans un IDE. Par exemple, je avec "#include " dans un éditeur de texte serait-il identique ou que je devrais le changer en "#include ". Ideme va pour quand vous voulez "cout", dans un IDE, il semble que je dois faire "STD :: COUT" alors que dans un éditeur de texte, je pouvais juste faire "Cout" sans la pré "STD ::"


@ReHannaqvi La syntaxe pour C ++ est la même partout. Un IDE est juste un éditeur de texte glorifié. Il n'y a pas d'en-tête iostream.h , vous devriez faire #include . Tous les en-têtes de bibliothèque C ++ ne sont pas fin de .h . Cependant, les en-têtes de la bibliothèque C font . Lorsque vous #include , l'objet Cout est dans l'espace de nom std , vous devez le qualifier avec std :: cout (sauf si vous faites quelque chose comme à l'aide de NAMESPACE STD; - mais c'est très méchant ).


merci beaucoup sftrabbit!



2
votes

Je ne crois pas que vous ayez besoin du int dans le typeDEF, je pensais de la mémoire non signée abrégée (par défaut) est un int.


2 commentaires

supprimé l'int dans la définition de Typedef, obtenant toujours la même erreur


J'ai enlevé l'int et la compilé sur mon Mac fonctionne bien. J'ai également ajouté un type de retour à la main principale.



3
votes

Vous pouvez facilement rechercher l'explication de l'erreur, en googling le code d'erreur. Par exemple. Googling for 'c4430' vous conduirait ici . La raison en est que d'autres l'ont dit, que vous n'avez pas déclaré le type de retour pour fonction principale .


0 commentaires