[解決済み] '{'トークンの前に期待される式
2022-02-14 01:32:15
質問
私が前にコメントした行に対して、"error: expected expression before '{' token"と表示されます。構造体がすでに定義されている場合、なぜトークンの前に "{"が必要なのでしょうか。どんな助けでもありがとうございます。
struct sdram_timing {
u32 wrdtr;
u32 clktr;
};
int calibration(void);
unsigned char read_i2c_cal(void);
static unsigned int eepcal[15];
main() {
DQS_autocalibration();
}
int calibration(void)
{
struct sdram_timing scan_list[30];
read_i2c_cal();
if(eepcal[0] == 0){
scan_list = {{eepcal[1], eepcal[2]}, {-1, -1}}; // <-- PROBLEM LINE
}
else {
//foo
}
return 0;
}
unsigned char read_i2c_cal(void) {
eepcal[0] = 0;
eepcal[1] = 02;
eepcal[2] = 03;
}
解決方法は?
このエラーは、この方法で配列を代入できないからです。この方法は、配列を初期化するためにのみ機能します。
int arr[4] = {0}; // this works
int arr2[4];
arr2 = {0};// this doesn't and will cause an error
arr2[0] = 0; // that's OK
memset(arr2, 0, 4*sizeof(int)); // that is too
そこで、これを具体的な例に当てはめてみます。
struct sdram_timing scan_list[30];
scan_list[0].wrdtr = 0;
scan_list[0].clktr = 0;
あるいは、同じように memset を使うこともできますが、sizeof(int) の代わりに構造体のサイズが必要です。これはいつもうまくいくとは限りませんが、構造体があればうまくいくでしょう。
関連
-
[解決済み】「ポインタから異なるサイズの整数へのキャスト」エラーが発生するのはなぜですか?
-
[解決済み】単項演算子「*」の型が無効(「int」がある)C言語でのエラー
-
[解決済み】 `S_ISREG()` とは何ですか、そして何をするのですか?
-
[解決済み】"Expected expression before ' { ' token"(トークンの前に期待される式)。
-
[解決済み】ISO C90では、C言語での宣言とコードの混在が禁止されています。
-
[解決済み】メモリー・クロバリング・エラー
-
[解決済み] struct has no member named
-
[解決済み】サイズ8の無効な読み取り - Valgrind + C
-
[解決済み】MPI通信でMPI_Bcastを使用する場合
-
[解決済み] 構造体'の前に期待される表現
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Valgrind が "Invalid write of size 8" で文句を言う。
-
[解決済み] c - 初期化がキャストなしでポインタから整数を作る、さらに2つのコンパイラーエラー
-
[解決済み] Connect: ソケット以外でのソケット操作
-
[解決済み】"Expected expression before ' { ' token"(トークンの前に期待される式)。
-
[解決済み】 strcpyとstrdupの比較
-
[解決済み】 switch case: error: case label does not reduce to an integer constant
-
[解決済み】スレッド1:EXC_BAD_ACCESS(コード=1、アドレス=0x0)標準Cメモリ問題
-
[解決済み】MB/sとMiB/sを計算する方法は?
-
[解決済み】 「配列のイニシャライザーはイニシャライザーリストまたは文字列リテラルでなければなりません」と表示されるのですが?
-
[解決済み] Cプログラムで「配列の添え字が整数でない」。