みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

_USERENTRYの意味

例えば
void Func(void (_USERENTRY *__Test)());
という関数と
void Func(void ( *__Test)());
という関数があったとして、どちらもコンパイルできるし、動作上問題なく動いているように見えます。
_USERENTRYを付ける意味は何でしょうか?

投稿日時 - 2018-06-27 13:58:26

QNo.9512732

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

処理系に依存する話になりますから使用している処理系を書きましょう(どの処理系にも_USERENTRYがあるわけではありません)。

処理系をMicrosoft Cコンパイラとして書きますが
_USERENTRYはコンパイル時にプラットホームに応じて__stdcallや__cdeclなどに置き換わります。
__stdcall, __cdeclは呼出規約の指定で、指定されるものによって引数は右から左に順に渡すとか、左から右に渡すとかなどが変わります。
詳細は
https://ja.wikipedia.org/wiki/%E5%91%BC%E5%87%BA%E8%A6%8F%E7%B4%84
を参照してください。

投稿日時 - 2018-06-27 19:58:51

あなたにオススメの質問