我是头文件的新手,我不知道为什么会收到此错误。第一段代码来自相关的头文件,并给出了预期的标识符错误:
#define MAX_ADDR_LENGTH 1000
struct listNode{
char addr[MAX_ADDR_LENGTH];
struct listNode *next;
};
与此相关的是,与该标题相关的文件中还有另一个错误,它给了我一个注意:在扩展宏' MAX_ADDR_LENGTH'时,它给了我一行给出了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声明的行,只是删除了短语&#39; int&#39; from同样的;所有这些都只会导致更多的错误。)
答案 0 :(得分:1)
问题:'MAX_ADDR_LENGTH'在代码中定义了两次;一次作为宏,一次作为变量。
尝试删除声明MAX_ADDR_LENGTH为变量的语句。
答案 1 :(得分: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
的类型,您可以在以后使用它来构建列表。