I have this header file ... for some reason I keep getting an error saying
log_server.h:48: error: expected identifier or ‘(’ before numeric constant
I get this error on both lines defining the put_evt and print_evt_list functions,
here's what the code looks like:
#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);
I've read that this error can be caused by having a preprocessing directive written on more than one line ... but I don't have that. Any idea what I'm doing wrong?
The identifier expected error is a compilation error, which means the code doesn't comply with the syntax rules of the Java language. For instance, one of the rules is that there should be a semicolon at the end of every statement. Missing the semicolon will cause a compilation error.
In C, an identifier is expected in the following situations: in a list of parameters in an old-style function header. after the reserved words struct or union when the braces are not present, and. as the name of a member in a structure or union (except for bit fields of width 0).
the problem was that I had struct evt
declared in another location.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With