「typedef void (*Something)()」とはどういう意味ですか? 質問する

「typedef void (*Something)()」とはどういう意味ですか? 質問する

私はこれが何を意味するのか理解しようとしています。私が見ているコードには

.h

typedef void (*MCB)();
static MCB     m_process;

.C

MCB Modes::m_process = NULL;

そして時々私は

m_process();

セグメンテーション エラーが発生します。これはおそらくメモリが解放されたことが原因です。解放されたときにデバッグするにはどうすればよいでしょうか?

ベストアンサー1

これは関数へのポインタ型を定義します。関数は void を返し、引数リストは指定されていません。これは、質問が (現在は誤っている可能性がありますが) C でタグ付けされているためです。C++ でタグ付けされていた場合、関数は引数をまったく受け取りません。引数をまったく受け取らない関数にするには (C の場合)、次のようにします。

typedef void (*MCB)(void);

これは、定義または使用する前にすべての関数をプロトタイプ化する必要がない (まだ) C と、プロトタイプ化する必要がある C++ との間に大きな違いがある領域の 1 つです。

おすすめ記事