在'{'令牌之前预期'=',',',';','asm'或'__attribute__'

时间:2013-04-26 04:47:46

标签: c gcc token

我的代码中出现了大量错误。无法弄清楚为什么。以下是错误示例:

In file included from mipstomachine.c:2:0,
                 from assembler.c:4:
rtype.c: In function ‘getRegister’:
rtype.c:6:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token

我的当前文件布局,为了解释,有mipstomachine.c,其中包括assembler.c,其中包含rtype.c

以下是我的rtype.c的第4-6行

void rToMachine(char* line, char* mach, int currentSpot, instr currentInstruction,
                            rcode* rcodes)
{   

我在rtype.c

中声明的每个函数都收到类似的错误

有什么想法吗?谢谢你们!

1 个答案:

答案 0 :(得分:4)

由于在评论中写得很好,我会将其作为答案添加。

在处理多个源文件时,您应该将它们逐个编译到目标文件中,然后在单独的步骤中将它们链接在一起以形成最终的可执行程序。

首先制作目标文件:

$ gcc -Wall -g file_1.c -c -o file_1.o
$ gcc -Wall -g file_2.c -c -o file_2.o
$ gcc -Wall -g file_3.c -c -o file_3.o

标志-c告诉GCC生成目标文件。标志-o告诉GCC将输出文件命名为什么,在本例中为目标文件。额外标志-Wall-g告诉GCC生成更多警告(总是好的,修复警告可能实际上修复了可能导致运行时错误的事情)并生成调试信息。

然后将文件链接在一起:

$ gcc file_1.o file_2.o file_3.o -o my_program

此命令告诉GCC调用链接器并将所有命名对象文件链接到可执行程序my_program


如果多个源文件中存在需要的结构和/或功能,那么当您使用头文件时就是这样。

例如,假设您有一个需要在多个源文件中使用的结构my_structure和一个函数my_function,您可以像这样创建一个头文件header_1.h:< / p>

/* Include guard, to protect the file from being included multiple times
 * in the same source file
 */
#ifndef HEADER_1
#define HEADER_1

/* Define a structure */
struct my_structure
{
    int some_int;
    char some_string[32];
};

/* Declare a function prototype */
void my_function(struct my_structure *);

#endif

此文件现在可以包含在这样的源文件中:

#include "header_1.h"