Ошибки компиляции, которые я не могу понять

У меня есть кусок кода, который я запускал без проблем. Но теперь я возвращаюсь к нему, и я просто не могу его даже скомпилировать!

Часть, которая не компилируется, представляет собой файл .c, и я думаю, что он жалуется на библиотеки.

Я пытаюсь скомпилировать его, выполнив следующие действия:

gcc f.c 

И я получаю:

In file included from /usr/include/machine/ansi.h:39:0,
                 from /usr/include/sys/ansi.h:35,
                 from /usr/include/stdio.h:42
                 from f.c:7:
/usr/include/machine/int_types.h:45:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'typedef'
In file included from /usr/include/sys/inttypes.h:39:0,
                 from /usr/include/inttypes.h:36,
                 from /usr/include/netdb.h:98,
                 from f.c:9:
/usr/include/sys/stdint.h:39:18: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int8_t'
In file included from /usr/include/ara/inet.h:69:0,
                 from netlib.h:7,
                 from f.c:16:
/usr/include/netinet/in.h:242:2: error: expected specifier-qualifier-list before '__int8_t'
/usr/include/netinet/in.h:259:2: error: expected specifier-qualifier-list before '__int8_t'

И это мой файл .c:

#include <stdio.h>
#include <string.h>
#include <netdb.h>
#include <sys/socket.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "netlib.h"


#include <stdlib.h>

#define MACHSIZE    50
#define BUFFSIZE    256
#define MAXCONN     100
#define MAXFILES    500
#define COMBUFF     200

struct Connection{
        int conn;
    in_addr_t ip;
    int port;
    int numFilesOpened;
};

typedef struct Connection Connection;

Connection connection[MAXCONN];

struct Files{
    int fid;
    long machine;
    int conn;
};

typedef struct Files Files;

Files files[MAXFILES];
int filesOpened = 0;
int port = 15061;
int numCli = 0;
char command[COMBUFF];
char response;
int conn;
char buffer[BUFFSIZE];

... 

Это еще не все, но я думаю, что это связано с библиотеками, так что вы могли бы помочь мне с этим.

Кто-нибудь может здесь что-нибудь увидеть?

Кроме того, если это важно, я делаю это на NetBSD, но я пробовал на FreeBSD, и это то же самое.


person coconut    schedule 22.05.2013    source источник
comment
Это действительно так? stdio.h — это самый первый заголовочный файл, который вы включаете, и в вашей команде gcc нет параметров -D? Если это так, я думаю, что ваша установка компилятора не работает. Что точно, так это то, что ошибка не может исходить из вашего кода, поскольку он терпит неудачу, даже не достигнув его.   -  person Medinoc    schedule 22.05.2013
comment
@Medinoc ничего себе - ваш комментарий с вопросом, действительно ли это было, заставил меня увидеть, что у меня была буква «f» прямо перед первой строкой (здесь не включена, потому что это был просто комментарий). СПАСИБО!   -  person coconut    schedule 22.05.2013


Ответы (1)


Очень загадочно.

Ваши сообщения об ошибках, такие как "from rfa_cli.c:7:", подразумевают, что перед "первой" строкой "#include..." вашего файла C есть 6 строк кода. Возможно, есть какая-то проблема с вашим редактором, который скрывает эти строки — какое-то случайное окончание строки или что-то в этом роде. Рекомендую попробовать скомпилировать только с "#include..." в вашем файле, чтобы увидеть, возникает ли первая ошибка. Если это так, начните с чистого текстового файла.

Далее вы говорите, что компилируете "f.c", но в сообщениях об ошибках написано "rfa_cli.c". Пожалуйста, дополните.

person chux - Reinstate Monica    schedule 22.05.2013