Я пытаюсь объявить свое собственное «CreateWindow» в своем пространстве имен «wnd», но gcc говорит «ошибка: макрос «CreateWindowA» требует 11 аргументов, но только 1 задан |». Подскажите, пожалуйста, как правильно получить. Вот код:
#include <windows.h>
namespace wnd
{
void CreateWindow()
{
}
}
2 ответа
Имя CreateWindow
уже существует в Windows API. К сожалению, ваше пространство имен (хорошая попытка!) не действует, поскольку исходный символ является макросом.
Для этого нет хорошего обходного пути, пока вы включаете windows.h
. Вам придется выбрать другое имя для вашей функции.
Есть макрос с именем CreateWindow
, конфликтующий с именем вашей функции.
Лучше всего просто изменить название функции.
Если вы настаиваете, вы можете #undef CreateWindow
, что проблематично, так как он отменит этот макрос для каждого файла, который будет включать ваш.
Итак, вам нужно сложить его и вернуть обратно:
#pragma push_macro("CreateWindow")
#undef CreateWindow
void CreateWindow()
{
}
#pragma pop_macro("CreateWindow")
* И он по-прежнему будет виден только в пределах области pragma
.
Похожие вопросы
Новые вопросы
c++
C++ — это язык программирования общего назначения. Изначально он разрабатывался как расширение C и имел аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде, который будет скомпилирован с помощью компилятора C++. Используйте тег версии для вопросов, связанных с конкретной стандартной версией [C++11], [C++14], [C++17], [C++20] или [C++23]. и т.д.
CreateWindow()
.