如何在c / c ++中定义常量数组?

时间:2011-07-31 21:57:00

标签: c++ c arrays const

如何在C / C ++中定义常量1维或2维数组? 我处理嵌入式平台(Xilinx EDK),因此资源有限。

我想写第三方头文件,比如

#define MYCONSTANT 5

但是对于数组。像

#define MYARRAY(index) { 5, 6, 7, 8 }

最常见的方法是什么?

6 个答案:

答案 0 :(得分:19)

在C ++源文件中

extern "C" const int array[] = { 1, 2, 3 };

要包含在C和C ++源文件

中的头文件中
#ifdef __cplusplus
extern "C" {
#endif
extern const int array[];
#ifdef __cplusplus
}
#endif

答案 1 :(得分:17)

在C ++中,定义常量数组的最常用方法当然应该是,erm,定义一个常量数组

const int my_array[] = {5, 6, 7, 8};

你有理由认为嵌入式平台会出现问题吗?

答案 2 :(得分:4)

在C ++中

const int array[] = { 1, 2, 3 };

这很容易,但也许我不能正确理解你的问题。以上内容在C中不起作用,请指出您真正感兴趣的语言。没有C / C ++这样的语言。

答案 3 :(得分:3)

使用define指令定义array常量是不可能的。

答案 4 :(得分:0)

我遇到过类似的问题。在我的例子中,我需要一个常量数组,以便用作其他静态数组的大小。当我尝试使用

const int my_const_array[size] = {1, 2, 3, ... };

然后声明:

int my_static_array[my_const_array[0]];

我的编译器收到错误:

array bound is not an integer constant

所以,最后我做了以下(也许还有更优雅的方法):

#define element(n,d) ==(n) ? d :
#define my_const_array(i) (i) element(0,1) (i) element(1,2) (i) element(2,5) 0

答案 5 :(得分:0)

#include <string>
#include <iostream>
#define defStrs new string[4] { "str1","str2","str3","str4" }
using namespace std;
...

const string * strs = defStrs;
string ezpzStr = strs[0] + "test" + strs[1];

cout << ezpzStr << endl;

花点时间弄清楚这一点,但是显然在C ++中它像这样工作。 仍然可以在 my 计算机上工作。