2016-05-31 79 views
2

私はこれを、それが何であってもEclipse Ideader/Intellisenceの命題として見つけました。そして、これはそれである:"char * _EXFUN(index、(const char *、int));"の意味 "

char *_EXFUN(index,(const char *, int)); 

まず(それはすべての関数の場合)、それはcharのポインタを返す関数のように見えますが、パラメータ私にはかなり混乱に見えます。どのように我々は括弧を持っているパラメータリストに来る。

+1

'_EXFUN'は明らかにマクロです - その定義を見つける必要があります。 –

+0

ヘッダーファイルで '_EXFUN'を検索します。また、前処理後にコンパイラを停止し、生成された内容を確認してください。 –

+0

ところで、このコード行はどこにありますか? '_EXFUN'のような名前はユーザコードでは許されません。コンパイラや標準ライブラリ(アンダースコアで始まる名前と大文字の後に続く名前は"実装 "用に予約されています。 –

答えて

9

_EXFUNは、一部のプラットフォームの標準ヘッダーで使用されるマクロのように見えます。 here

#ifndef _EXFUN 
# define _EXFUN(N,P) N P 
#endif 

したがって、char *_EXFUN(index,(const char *, int));は同じヘッダが何か他のもの、例えばに_EXFUNセットで前処理することができるように、このトリックは時々行われ

char * index(const char *, int) 

に展開します関数のシグネチャを調べたり、エクスポートされたシンボルをライブラリに宣言することができます。

関連する問題