私の VS2012 Windows Phone プロジェクトの一部は C です。ある日、配列を初期化してその中に何かを入れようとして苦労しました。
グローバル (関数外) として初期化しようとすると、const ではない値で初期化できないというメッセージが表示されます。
const char* myArray = (const char*)malloc(256);
// Bad code: this isn't initialized with a const
値で初期化しないと、値を指定するようにというメッセージが表示されます。そのため、配列に NULL 値を割り当てます。
const char* myArray = NULL;
次に、どこかにサイズを設定する必要があるため、メイン関数または最初の関数内でサイズを設定します。
int myFirstFunctionInTheCode()
{
myArray = (char*)malloc(256);
}
次に、「;」のようなものを取得します。タイプの前に期待される
だから私はフォーラムを検索していて、Visual Studio の C は C89 であることを読んだので、宣言してから 2 つの別々の行に割り当てる必要がありますが、これは私のコードの他の場所には当てはまらないため、完全に混乱しています-リアル-基準。しかし、2行で実行しても同じエラーが発生します。
次に、利用可能な VS ライブラリの他のツールを使用して、C では sstream や streambuf などを含めることができないことを確認することにしました。そうしないと、プロジェクト全体が何千ものバグで失敗します。したがって、boost を使用して実際のストリーム ライブラリを取得できますが、一部のスレッドが使用されているため、Windows Phone とは互換性がありません。
C (Visual Studio) でグローバル固定サイズ配列内に値を設定するにはどうすればよいですか?
私が達成したいのは、次のようなC#の何かに似ています:
static byte[] gentleCSharpArray = new byte[256];
private void easyShotCSharpFunction()
{
gentleCSharpArray[0] = 0x57;
gentleCSharpArray[1] = 0x54;
gentleCSharpArray[2] = 0x46;
}
配列に値を代入するのにそれほど時間をかけたことがないので、グローバルな char* 配列を完全に間違っていると思いますか?