attendu identifiant ou ‘(’ avant constante numérique?
J'ai ce fichier d'en-tête ... pour une raison que je reçois un message d'erreur disant:
log_server.h:48: error: expected identifier or ‘(’ before numeric constant
J'ai cette erreur sur les deux lignes de la définition de la put_evt et print_evt_list fonctions,
voici à quoi ressemble le code:
#ifndef _GENERIC
#define _GENERIC
#include <string.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#endif
#ifndef _NETWORKING
#define _NETWORKING
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <sys/socket.h>
#include <sys/types.h>
typedef struct sockaddr SA;/* To make casting in the (bind, recvfrom, sendto) more readable */
#endif
#define LOGIN_EVT 0
#define LOGOUT_EVT 1
#define RECV_MSG 27
#define SEND_MSG 64000
#define MAX_EVT_COUNT 3000
struct evt{
char user_name[8];
int type;
long int time;
};
/* open log file to append the events to its end
* return 0 on success and -1 on failure (file could not be opened)
*/
int init_log(const char *log_fname);
/* closes the log file
* return 0 on success and -1 on failure (file could not be opened)
*/
int terminate_log();
/* add new event to the log file
* return 0 on success and -1 on failure
*/
int put_evt(struct evt *e);
/* get list of events that occured after the given time
* count is the size of the allocated and passed e-list
* return number of found events on success and -1 on failure
*/
int get_events(struct evt *e_list, long int time);
/* print given event's info (name, time)*/
void print_evt(struct evt *e);
/* print "count" event's info from the given e_list info (name, time)*/
void print_evt_list(struct evt *e_list, int count);
/* startListen takes a port number and returns a listening descriptor on sucess or negavtive on error */
int startListen(int port);
/* Responsbile for hanlding received messages from clients and responding to them accordingly
if the message is an action done, it'll save it in the log file and notify the client
if the message is a query about the events, it'll call the private function queryHandler(); to handle it
returns negative on ERROR*/
int handle_message(int sockDescriptor, struct sockaddr_in *client, char *recvMessage);
J'ai lu que cette erreur peut être causée par un prétraitement directive écrite sur plus d'une ligne ... mais je n'ai pas que. Toute idée de ce que je fais mal?
Ce serait pratique pour vous faire remarquer la ligne 48
laquelle est la ligne 48?
Pour exclure une sorte de bizarre macro / divers prétraitement curiosité, vous devriez vérifier la séquence de sortie et de voir s'il a l'air sain d'esprit. Avec
J'ai déjà dit que l'erreur est donnée sur les deux fonctions put_evt et print_evt_list
le
laquelle est la ligne 48?
Pour exclure une sorte de bizarre macro / divers prétraitement curiosité, vous devriez vérifier la séquence de sortie et de voir s'il a l'air sain d'esprit. Avec
gcc
cela peut être fait à l'aide de la -E
drapeau.J'ai déjà dit que l'erreur est donnée sur les deux fonctions put_evt et print_evt_list
le
-E
option a été suggéré plusieurs fois, mais nous allons essayer une fois de plus: que fait la commande gcc -E sourcefile.c | grep put_evt
dire? (s'adapter à toutes les options que vous pourriez avoir besoin d'ajouter de gcc
de travail, tels que -I
).
OriginalL'auteur Varda Elentári | 2012-05-03
Vous devez vous connecter pour publier un commentaire.
Je pense que vous avez
#define e 2.71828183
ou quelque chose comme dans les précédents en-têtes.De savoir pour sûr, exécutez le code par le biais de préprocesseur et les chercher à la sortie. Dans gcc-E commutateur de ligne de commande
Renommer le prototype de prendre un autre nom de paramètre:
void print_evt(struct evt *ev);
non, l'erreur reste
Supprimer le nom du paramètre à partir du prototype à tous, comme il absolument inutile. @quelqu'un
qui n'a pas aussi bien
OriginalL'auteur Arkadiy
le problème était que j'avais
struct evt
déclaré dans un autre emplacement.J'ai eu le même problème lors de la définition de type avec un des codes d'erreur enum qui est arrivé à avoir les mêmes identifiants que ceux de errno.
OriginalL'auteur Varda Elentári
J'ai eu exactement le même problème, et compris que
struct evt
a été défini dans un autre emplacementOriginalL'auteur Killua
Je voudrais essayer de renommer les fonctions légèrement. Parfois, si l'un des en-têtes est la définition d'un jeton (comme "put_evt") que vous utilisez, le préprocesseur va marquer votre code.
(
près de la fonction.OriginalL'auteur Nathan Wiebe