C/C++で定数1または2次元配列を定義する方法は?エンベデッドプラットフォーム(Xilinx EDK)を扱っているため、リソースが限られています。
次のようなサードパーティのヘッダーファイルに書き込みたい
#define MYCONSTANT 5
しかし、配列用。お気に入り
#define MYARRAY(index) { 5, 6, 7, 8 }
これを行う最も一般的な方法は何ですか?
C++ソースファイル内
extern "C" const int array[] = { 1, 2, 3 };
CおよびC++ソースファイルの両方に含まれるヘッダーファイル
#ifdef __cplusplus
extern "C" {
#endif
extern const int array[];
#ifdef __cplusplus
}
#endif
C++では、定数配列を定義する最も一般的な方法は、間違いなくdefine a constant array:
const int my_array[] = {5, 6, 7, 8};
その組み込みプラットフォームに何らかの問題があると思われる理由はありますか?
C++で
const int array[] = { 1, 2, 3 };
それは十分簡単でしたが、あなたの質問を正しく理解していないかもしれません。上記はCでは動作しませんが、実際に興味のある言語を指定してください。C/ C++などの言語はありません。
Defineディレクティブを使用してarray
定数を定義することはできません。
同様の問題がありました。私の場合、他の静的配列のサイズとして使用するには、定数の配列が必要でした。私が使用しようとしたとき
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
#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コンピューターで動作します。