
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
C言語のポインターに関する警告
C言語・C++・C#
-
C言語でヘッダファイルにグローバル変数を宣言する
C言語・C++・C#
-
コンパイルエラーについて
C言語・C++・C#
-
-
4
C言語初心者の質問失礼します。
C言語・C++・C#
-
5
至急です! マクロ定義で #define NUMBER 10とし 関数で max(double ma
C言語・C++・C#
-
6
C言語の関数形式マクロの定義・呼び出し時の空白の挿入
C言語・C++・C#
-
7
C言語での引数の省略方法
C言語・C++・C#
-
8
gcc: incompatible pointer type
C言語・C++・C#
-
9
C言語のポインタに直接アドレスを割り振りしたい
C言語・C++・C#
-
10
メモリをアドレスを直接指定して値を取得するには
C言語・C++・C#
-
11
戻り値を返す関数の前に(void)を付ける
C言語・C++・C#
-
12
「#undef」と「#define」の使い方について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 配列の長さの上限
-
Visual Basic 6.0 と8.0と2015
-
配列を返り値、でエラー
-
9枚の写真がA4 1枚に印刷できま...
-
配列で格納したものをmsgboxで...
-
【速いブラインドタッチ】手を...
-
RGB値を画像(PNG・BMPJPEGなど)...
-
C言語において、 配列要素をひ...
-
C++で、メンバもヒープに確保さ...
-
ポインタに ~0を入れること
-
x64環境で連続4GB以上のメモリ...
-
vbでDataTableの抽出コピー
-
VBを2008を用いてCSVを取り込む...
-
PHP MySQL自動連番で削除された...
-
aspでユーザー定義の構造体を作...
-
c言語
-
_tcscpy_s(wcscpy_s)の第二引数...
-
関数のパラメタ(C++)
-
関数から配列を返すには?
-
CopyMemory()をmemcpy()に書き...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
C# Listを使わずに2次元配列の...
-
配列を含む構造体の初期値について
-
先頭アドレスとは何ですか?
-
配列で格納したものをmsgboxで...
-
【速いブラインドタッチ】手を...
-
テキストファイルから文字列を...
-
ExcelVBAで質問です。離れた二...
-
配列をEraseしてもメモリが開放...
-
メモリの初期値
-
複数の選択範囲の行番号を個別...
-
unsigned char配列への入力の仕方
-
【C言語】配列の中に配列を入れ...
-
VBで構造体の配列を関数に渡す...
-
エラ-メッセ-ジの意味を教え...
-
C# 配列の変数宣言について。
-
C言語 配列の再初期化
-
LGノートPCグラムについて
-
C言語初心者 構造体 課題について
おすすめ情報