8
votes

Erreur: attendu ')' Avant '*' Jeton

J'ai ce fichier include ( mémoire .h code>) xxx pré>

et ce fichier de mise en œuvre ( memory.c code>) p >

#include <stdlib.h>
#include "memory.h"

void
memory_init (memory* mymemory, int size)
{
    mymemory->cells = (int*) malloc (sizeof (int) * size);
    mymemory->cells_number = size;
    mymemory->current_cell = (int*) ((mymemory->cells_number / 2) * sizeof (int));
}
... //other function definitions follow

c

2 commentaires

GCC version 4.2.1 sur l'OSX Snow Leopard, avec interrupteur -ansi


Peut-être qu'un autre en-tête déjà défini Memory_H avant que votre en-tête soit inclus?


3 Réponses :


16
votes

Parce que le système Memory.h est une observation de votre Memory.h , causant le #include pour réussir sans déclarer vos types. Plusieurs corrections possibles:

  • renommer votre dossier - probablement pour le meilleur en tout état de cause, afin de réduire la confusion potentielle.
  • Inclure votre fichier via un sous-répertoire préfixe (E.G., #include ).
  • Déplacez votre fichier dans le même répertoire que le fichier source, permettant aux règles #include de règles de précédente pour les noms de fichiers enveloppés dans " pour prendre effet.
  • Assurez-vous que votre pré-processeur C inclut les options de chemin de chemin Placez votre chemin d'en-tête de projet avant les chemins d'en-tête du système.

3 commentaires

Pour éviter les problèmes futurs, existe-t-il une référence rapide pour les noms d'en-tête Standard C?


@klez qui semble être une question existante: Stackoverflow.com/Questtions/2027991/... . Dans ce cas, cependant, les listes liées aux normes n'auraient pas aidé, car memory.h n'est pas un en-tête standard. Vous pouvez toujours voir ce que votre OS particulier fournit quelque chose comme trouver / usr / include / -type f -name '* .h' .


Fourni, bien sûr, que votre système d'exploitation a trouve et garde les en-têtes dans / usr / include / . Toutes les personnes n'ont pas la chance de gérer ces OSES.



3
votes

Cette réponse est vraiment en retard, mais j'ai rencontré un problème similaire.

Je pense que votre problème est lié à une faute de frappe dans votre fichier .h où vous déclarez une structure mm Emory. Si vous supprimez cet extra 'M', cela devrait fonctionner.


1 commentaires

Votre réponse est vraiment en retard et le problème n'était pas que :-) merci quand même



-1
votes

Dans votre code, vous avez défini comme celui-ci pour mémoire.h xxx

si n'importe quel autre fichier que vous utilisez dans votre projet est d'avoir la même #define, c'est-à-dire mémoire_h. Obtenez cette erreur.

solution: xxx


0 commentaires