定义一个非常大的数组(查找表)的最佳方法是什么?

Jak*_*nds 3 c++ arrays

我必须在代码中定义一个大型数组(查找表).它包含256个元素,占用近1个电脑屏幕.

有两个函数正在使用此数组.我想在函数下定义这个数组,所以我可以在开发过程中非常快速地访问它们.

但是如果我尝试在一个文件中执行它,编译器将在函数周围给出"未声明的标识符"错误 - 因为它们使用数组.

所以,我必须将函数和数组放在单独的文件中.

这是我的程序的结构:

main.cpp:

#include "lookup.h"

...uses two functions...
Run Code Online (Sandbox Code Playgroud)

-

lookup.h:

#ifndef SubMaster_lookup_h
#define SubMaster_lookup_h

void func1(void);
void func2(void);

char LookupTable[][3]={ "00", "01", "02" "03", "04", "05", "06", "07", "08", "09",
"0a", "0b", "0c", "0d", "0e", "0f", "00", "01", "02" "03", "04", "05", "06", "07",
"08", "09", "0a", "0b", "0c", "0d", "0e", "0f", "10", "11", "12", "13", and so on...}
Run Code Online (Sandbox Code Playgroud)

-

lookup.cpp:

#include "lookup.h"

void func1() {
   ...body of func1...
}

void func2() {
   ...body of func2...
}
Run Code Online (Sandbox Code Playgroud)

以下结构在构建期间为我提供了"ld:重复符号_LookupTable".有没有办法改变结构,所以不会出错?

cni*_*tar 9

两种方式:

  • 在标头中声明数组并在cpp文件中定义
  • 让它静止.但这非常讨厌(每个翻译单位都会得到自己的副本)

试试这个:

lookup.h
extern char LookupTable[][3];

lookup.cpp
#include "lookup.h"

char LookupTable[][3] = ...
Run Code Online (Sandbox Code Playgroud)

这个答案很好.