1

私のコードでは、このようなエラーが大量に発生しています。理由がわかりません。エラーの例を次に示します。

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

説明のために、私の現在のファイル レイアウトには、miptomachine.c があり、これには、rtype.c を含む assembler.c が含まれています。

これが私のrtype.cの4〜6行目です

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

rtype.c で宣言されたすべての関数に対して、このようなエラーが発生します

何か案は?みんなありがとう!

4

1 に答える 1

4

コメントにきちんと書くと長すぎるので、代わりにこれを回答として追加します。

複数のソース ファイルを扱う場合は、それらを 1 つずつオブジェクト ファイルにコンパイルし、別の手順でそれらをリンクして最終的な実行可能プログラムを作成する必要があります。

まず、オブジェクト ファイルを作成します。

$ 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-gGCC にさらに多くの警告を生成するように指示します (常に有効です。警告を修正すると、実行時エラーを引き起こす可能性のある問題が実際に修正される可能性があります)。デバッグ情報を生成します。

次に、ファイルをリンクします。

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

このコマンドは、リンカを呼び出し、すべての名前付きオブジェクト ファイルを実行可能プログラムにリンクするように GCC に指示しますmy_program


複数のソース ファイルで必要な構造体や関数がある場合は、ヘッダー ファイルを使用します。

たとえば、複数のソース ファイルから使用する必要がある構造体my_structureと関数があるとします。次のようなヘッダー ファイルを作成できます。my_functionheader_1.h

/* 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"
于 2013-04-26T04:58:45.637 に答える