我有一段代码,我以前运行没有问题。但现在我要回到它,我甚至无法编译它!
未编译的文件是.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,它也一样。
答案 0 :(得分:1)
非常神秘。
您的错误消息如“from rfa_cli.c:7:”意味着在您的C文件的“第一行”“#include ...”之前有6行代码。也许你的编辑器存在一些隐藏这些行的问题 - 一些流线结束或其他什么。建议尝试使用文件中的“#include ...”进行编译,看看是否仍然出现第一个错误。如果是,请从干净的文本文件开始。
此外,您说您正在编译“f.c”,但错误消息显示“rfa_cli.c”。请详细说明。