#include "stdafx.h"
#include <ctype.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
//typedef struct kvNode kvNode;
struct kvNode
{
char cKey[32];
uint32_t iValue;
struct kvNode *NEXT;
};
//Function declarations
void put(char *key[], int *value);
uint32_t get(char *key[]);
int del(char *key[]);
uint32_t hashkey(char *key);
void strUpper(char *);
const int arraylen = 10; //length of key array
kvNode *keys[]; //our key array
int main()
{
//Create array of pointers to kvNodes
keys[arraylen] = { NULL };
return 0;
}
我确信这是返回错误的代码块。错误发生在生成期间,并且是:
1>keyValue.obj:错误LNK2001:未解析的外部符号“struct kvNode**keys”(?键@@3PAPAUkvNode@@A)
我要做的是在C中练习一个键值存储(毫无疑问,我们应该说,最近使用的宽松语言使我的C刀变钝了),所以我定义了一个键值节点结构,然后定义一个指向这些节点的指针数组。继其他关于结构的正向声明的问题之后,我得到了在结构内部声明指向结构的指针的语法,但是由于某种原因,编译器(Vis Studio)在一个未解析的外部符号上咳嗽,我不知道为什么。
最佳答案
您需要声明此数组的大小kvNode *keys[]; //our key array
如果在编译时大小未知,编译器如何编译它?它被声明为具有静态生存期,所以必须给它一个固定的大小,一个固定的二进制内存块。我认为编译器将上述行解释为声明而不是定义,因此出现了链接错误。
关于c - LNK2001:无法解析的外部符号struct **,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32928685/