我定义的宏功能似乎不起作用。
main.cpp:22:3:错误:未知类型名称'a'
a * app = new a;
^
main.cpp:22:16:错误:未知类型名称'a'
a * app = new a;
^
以下是更多源代码:
#include <iostream>
#include "monster.h"
#define DECLARE_MAIN(a)
class game : public monster::app {
void init()
{
}
void startup()
{
}
void render(double currentTime)
{
}
};
DECLARE_MAIN(game)
int main(int argc, const char ** argv)
{
a *app = new a;
app->run(app);
delete app;
return 0;
}
如果我不使用宏那么没问题
int main(int argc, const char ** argv)
{
game *app = new game;
app->run(app);
delete app;
return 0;
}
如何使用此宏?
我认为我缺乏理解宏是如何工作的以及我从中复制的来源。 我没有意识到下面的函数是宏的一部分。
#define DECLARE_MAIN(a) \
int main(int argc, const char ** argv) \
{ \
a *app = new a; \
app->run(app); \
delete app; \
return 0; \
}
答案 0 :(得分:2)
我怀疑你是否试图将宏用作typedef
。
看起来你的意思是:
typedef game a;
然后你就可以开始行了:
a * app = new a;
答案 1 :(得分:1)
将您的宏定义为:
#define DECLARE_MAIN(a) \
do {\
a *app = new a; \
app->run(app);\
delete app;\
} while (0)
您只需编写:
int main
在主要内部,您可以:
int main(int argc, char **argv) {
DECLARE_MAIN(game);
return 0;
}