Как избежать конфликта имен с макросами, определенными в заголовочных файлах Windows?

У меня есть код C ++, который включает в себя метод под названиемCreateDirectory(). Ранее в коде использовались только STL и Boost, но недавно мне пришлось включить<windows.h> чтобы я мог посмотретьCSIDL_LOCAL_APPDATA.

Теперь этот код:

filesystem.CreateDirectory(p->Pathname()); // Actually create it...

Больше не компилируется:

error C2039: 'CreateDirectoryA' : is not a member of ...

Что соответствует этому макросу вwinbase.h:

#ifdef UNICODE
#define CreateDirectory  CreateDirectoryW
#else
#define CreateDirectory  CreateDirectoryA
#endif // !UNICODE

Препроцессор переопределяет мой вызов метода. Есть ли какой-нибудь возможный способ избежать этого конфликта имен? Или я должен переименовать мойCreateDirectory() метод?

Ответы на вопрос(7)

Ваш ответ на вопрос