如何在C / C ++中定义常量1维或2维数组? 我处理嵌入式平台(Xilinx EDK),因此资源有限。
我想写第三方头文件,比如
#define MYCONSTANT 5
但是对于数组。像
#define MYARRAY(index) { 5, 6, 7, 8 }
最常见的方法是什么?
答案 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 计算机上工作。