我的代码中出现了大量错误。无法弄清楚为什么。以下是错误示例:
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
中声明的每个函数都收到类似的错误有什么想法吗?谢谢你们!
答案 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"