2017-12-09 17 views
-1

ヘッダーファイルが新しく、このエラーが発生する理由がわかりません。最初のコードは関連するヘッダーファイルにあります。識別子エラー:マクロ 『MAX_ADDR_LENGTH』の展開で、それが与える行で私を与える:これに関連しヘッダーファイルエラー:識別子または '('の前に数値定数があります。

#define MAX_ADDR_LENGTH 1000 
struct listNode{ 
    char addr[MAX_ADDR_LENGTH]; 
    struct listNode *next; 
}; 

、私に」注意を与えることをヘッダに関連するファイル内の別の誤差があり、 intの宣言MAX_ADDR_LENGTH:

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include "header.h" 

char *crawl(char* getLinksFrom, int hopTo){ 

int MAX_ADDR_LENGTH = 300; 
char startAddr[MAX_ADDR_LENGTH]; 
char destAddr[MAX_ADDR_LENGTH]; 

} 

私はいくつかの薄いそれはちょうど小さな監視(#define altogtherを削除し、int MAX_ADDR_LENGTH宣言を与える行を削除し、同じものから 'int'というフレーズを削除しました。そのすべてがただちにエラーを引き起こした)。

答えて

0

問題: 'MAX_ADDR_LENGTH'はコードで2回定義されています。マクロとして1回、変数として1回。

変数としてMAX_ADDR_LENGTHを宣言するステートメントを削除してください。

+0

こちらの商品も購入されています。だから私はそれをし、それは元のエラーを取り除いた。しかし、逆参照に関連して、1トンの新しいものを作った – Brooklyn

0

このようなあなたのヘッダーのビルド:

#ifndef HEADER_H 
#define HEADER_H 

#define MAX_ADDR_LENGTH 1000 
typedef struct _listNode{ 
    char addr[MAX_ADDR_LENGTH]; 
    struct _listNode *next; 
} listNode; 

#endif /* HEADER_H */ 

とこのようにそれを使用します。

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include "header.h" 

char *crawl(char* getLinksFrom, int hopTo){ 

    char startAddr[MAX_ADDR_LENGTH]; 
    char destAddr[MAX_ADDR_LENGTH]; 
    .... more code 
} 

#ifndefを... #endif構築物がinclude guardと呼ばれています。コードをコンパイルする必要はありませんが、それを使用するのは良い方法です。

typedefを使用してノード構造を定義します。まだ変数を作成していません。後でリストを作成するために使用できるlistNodeという名前の型を定義するだけです。

関連する問題