À l'aide d'un typedef avais uint causes d'erreur, tout en “unsigned int” n'est pas...?

Pour une raison quelconque, quand je définis une variable comme "uint" au lieu de "unsigned int" dans mon programme, il erreurs. Cela semble étrange, parce que uint est typedef avais comme:

typedef unsigned int uint;

...donc je pense que je pourrais utiliser les deux de façon interchangeable. Pour être plus exact, je suis en assignant le résultat d'une fonction qui renvoie "unsigned int" dans une variable uint, puis
l'aide que uint dans un vecteur redimensionner appel... à quel point c'erreurs. C'est à dire, mon code ressemble à ceci:

unsigned int getUInt()
{
    return 3;
}

int main(void) {
    vector<vector<float> > vectVect(100000);
    for(uint i = 0; i < vectVect.size(); ++i)
    {
        vector<float>& myVect = vectVect[i];
        uint myUnsignedInt = getUInt();
        myVect.resize(myUnsignedInt);
    }
    cout << "finished" << endl;
}

...et la ligne, c'erreurs est le myVect.redimensionner ligne.

Évidemment, j'ai déjà une solution, mais je voudrais comprendre POURQUOI ce qui se passe, comme je suis assez perplexe. Quelqu'un a des idées?

PS - Dans le cas où quelqu'un pense qu'il peut avoir une importance, je suis en utilisant gcc v4.1.2 sur fedora 15... et le fichier include qui définit uint est /usr/include/sys/types.h.

Chaque fois que vous obtenez un message d'erreur, vous devez toujours inclure l'erreur en question dans votre question.
Vous devez montrer le vrai code qui est en cause. En particulier, la #include-s, le using déclarations, etc. Et GCC 4.6 est probablement beaucoup plus standard conforme de 4,1 était.
Et comme vous pouvez le voir ici, l'erreur ne se produit pas dans l'exemple que vous avez fournies (au moins avec cette version de gcc).
Et pour le fun, gcc 4.3.4 ne pas produire l'erreur.
L'erreur était une erreur de segmentation lors de l'exécution - et après le creusement plus loin, je pense que la définition de type est sans rapport. Ça doit être une sorte de problème avec la mémoire non écrit dessus, et changer cette typedefjust est arrivé de changer le code du hasard façon dont il a travaillé. Merci pour les commentaires, si!

OriginalL'auteur Paul Molodowitch | 2011-11-17