3

私はここで絶対に狂っているつもりです。私はWindowsでC++開発を行っており、「interface」という名前の名前空間があります。

namespace gd {
namespace interface {

}} // end namespace

ただし、「interface」という名前のマクロを含む「Windows.h」または「Wtypes.h」を含めても、「objbase.h」という名前のファイルが含まれています。このマクロでは、名前空間名を使用できません。Win32 APIには、インターフェイスマクロの定義を無効にする機能がありますか?そうでない場合、誰かが私のコードベースであまりにも多くの大規模な変更を必要とせずに、それを無効にするための巧妙な回避策を考えることができますか?

4

2 に答える 2

9

本当にこれを実行したい場合は#undefinterfaceマクロを使用できます。

むしろ、名前空間interfaceに名前を付けないことをお勧めします。これinterfaceは、実際には予約語でなくても取得できる限り、予約語に近いためです。その名前空間を使用すると、かなりの混乱が生じます。

于 2012-08-07T21:34:00.193 に答える
0

WIN32_LEAN_AND_MEANを含めるときにそれobjbase.hが引き込まれないように定義することもできるようですwindows.h

于 2014-04-11T12:55:18.557 に答える