1

このコード行はどういう意味ですか?

#define NAME ((LPCSTR) 5)

変数を定義すると、次のNAME *tmpように使用します。

((LPCSTR) 5) *tmp;

そのコードは何をしますか?

注:LPCSTRですtypedef __nullterminated CONST CHAR *LPCSTR

4

2 に答える 2

3

これは単純なキャストで、5 を文字ポインター ( __nullterminated CONST CHAR *)に変換します。

これはおそらく標準では定義されていない動作ですが、実際に使用されることもあります。

  • マシン上の特定の物理アドレスをアドレス指定するには - たとえば、カーネルはこれを実行して、カード、オンボード チップなどを構成する必要があります...
  • 引数または戻り値で特別な値を送信するには..たとえば、呼び出しでは通常、2 番目の引数にポインターが必要ですが、「5」を渡すと、別の意味になります。

ご覧のとおり、これは実際にはポインターであるため、試したNAME *tmp;ことはコンパイルされません。

于 2012-09-26T09:45:48.280 に答える