
gccのワーニングメッセージの意味が分からないの
で質問させてください。
// **************************
void Vfunc1(void)
{}
void Vfunc2(void)
{}
typedef void(*VFUNC)(void);
typedef struct {
VFUNC svc[2];
} VFUNC_STR ;
const VFUNC_STR VfuncStr = {
Vfunc1,Vfunc2
};
// **************************
関数配列を引き渡しする構造体を作っているのです
が、以上のソースをgccでコンパイルすると、
warning: missing braces around initializer
warning: (near initialization for 'VfuncStr.svc')
というワーニングが出ます。
ところが構造体定義を
// **************************
typedef struct {
VFUNC svc1;
VFUNC svc2;
} VFUNC_STR ;
// **************************
と記述し直すとワーニングは出ませんでした。
どういう問題なのでしょうか?
メンバ svcを配列表現しないと使いづらいので、ど
う表現すればワーニングを回避できるのかご教示く
ださい。
ちなみに
// **************************
const VFUNC svc[2] = {
Vfunc1,Vfunc2
};
// **************************
と記述してもワーニングは出ないので、構造体のメン
バとして記述すると、 svcが配列へのポインタと認識
されて実体を外に作成してしまうのかなと想像してい
ます。
No.1ベストアンサー
- 回答日時:
const VFUNC svc[2] = {
{Vfunc1,Vfunc2}
};
外側の中括弧は構造体の、
内側の中括弧は配列の
初期値を示します。
ありがとうございます。
構造体内に配列がある場合は、配列を{}で括
る必要があるのですね。
括るとワーニングが出なくなりました。
回答にあるような単なる配列の場合は、{}で
二重に括ると別のメッセージが出るようです。
warning: braces around scalar initializer
warning: (near initialization for 'svc[0]')
warning: excess elements in scalar initializer
warning: (near initialization for 'svc[0]')
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- 工学 Pythonのvectorizeに関連した質問です。 4 2022/12/16 18:01
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
このQ&Aを見た人はこんなQ&Aも見ています
-
C言語のポインターに関する警告
C言語・C++・C#
-
C言語でヘッダファイルにグローバル変数を宣言する
C言語・C++・C#
-
コンパイルエラーについて
C言語・C++・C#
-
-
4
C言語のポインタに直接アドレスを割り振りしたい
C言語・C++・C#
-
5
C言語初心者の質問失礼します。
C言語・C++・C#
-
6
「#undef」と「#define」の使い方について
C言語・C++・C#
-
7
構造体のメンバをfor文で回したい
C言語・C++・C#
-
8
エラーの意味は? Lvalue required
C言語・C++・C#
-
9
C言語 配列の長さの上限
C言語・C++・C#
-
10
C言語 構造体の中に共用体を定義した変数の初期化に関して
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 配列の長さの上限
-
VBで構造体の配列を関数に渡す...
-
配列で格納したものをmsgboxで...
-
C言語で特定列だけを抽出して配...
-
VB.netでRadioButtonを配列にし...
-
C言語 配列の再初期化
-
C# Listを使わずに2次元配列の...
-
テキストファイルから文字列を...
-
ExcelVBAで質問です。離れた二...
-
defineを使った配列
-
先頭アドレスとは何ですか?
-
Excel、VBAのユーザーフォーム...
-
VBAで配列からbmp画像を出力す...
-
配列を使わずに、変数名を動的...
-
C言語でcharの足し算
-
複数の選択範囲の行番号を個別...
-
C# 配列の変数宣言について。
-
C言語初心者 ポインタについて...
-
配列の参照渡しで型が一致しま...
-
C言語初心者 構造体 課題について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
C# Listを使わずに2次元配列の...
-
配列を使わずに、変数名を動的...
-
配列で格納したものをmsgboxで...
-
【速いブラインドタッチ】手を...
-
配列をEraseしてもメモリが開放...
-
ExcelVBAで質問です。離れた二...
-
Redimした動的配列はEraseする...
-
C# 配列の変数宣言について。
-
複数の選択範囲の行番号を個別...
-
VBで構造体の配列を関数に渡す...
-
先頭アドレスとは何ですか?
-
配列の参照渡しで型が一致しま...
-
銀行ATMの数字キーの配列
-
配列を含む構造体の初期値について
-
C言語で特定列だけを抽出して配...
-
unsigned char配列への入力の仕方
-
VB.NET 構造体の配列の検索機能...
-
C++ vectorに配列をプッシュしたい
-
C言語初心者 構造体 課題について
おすすめ情報