winnt.h
ヘッダーに定義されている大文字のVOID
マクロが存在する理由を知りたい人は誰ですか?winnt.hの大文字VOIDマクロとINT typedefの目的
事項をさらに混乱させるために、VOID
はCHAR
、SHORT
、INT
、およびLONG
一方のtypedefは、マクロです。
がwinnt.h
から関連の抜粋を参照してください:
#ifndef VOID
#define VOID void
typedef char CHAR;
typedef short SHORT;
typedef long LONG;
#if !defined(MIDL_PASS)
typedef int INT;
#endif
#endif
VOID* pointer
の代わりvoid* pointer
を行うための、おそらく歴史的な理由?
EDIT:もっと厄介で何が今日のプログラミングのWindowsを実行するとき、人々はvoid
の代わりにVOID
を使用して確認することです。また、MSDNドキュメントの一部として見ることもできます。 http://msdn.microsoft.com/en-us/library/bb205867(v=vs.85).aspx
いいえ、あなたはそれを持っています。必要なtypedefは 'typedef void VOID'です。これは完全に許可されています。それを試してみてください。 –
私はtypedefを後方に入力しました。しかし、修正されたとしても、当時のマイクロソフトのコンパイラは許していません。マイクロソフトがCの定義として扱ったのは当然のことですが、ほとんどのコンパイラはそれを許していましたが、マイクロソフトはこれを許可しましたが、ものはしませんでした。 –