【发布时间】:2014-12-04 17:42:24
【问题描述】:
我定义的宏函数似乎不起作用。
main.cpp:22:3:错误:未知类型名称“a”
a *app = 新的 a;
^
main.cpp:22:16:错误:未知类型名称“a”
a *app = 新的 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; \
}
【问题讨论】:
-
好吧,我没有看到
a类型的声明,所以听听你的编译器吧。 -
我不知道你希望那个宏做什么,但它实际上并没有做任何事情。
-
也许您会发现 preprocessing your source 会有所帮助。
-
您实际上认为
#define DECLARE_MAIN(a)应该扩展到什么?根本没有为该宏定义任何文本。 -
我们不知道您要做什么。您已经定义了一个名为 DECLARE_MAIN 的宏,该宏扩展为空。您似乎希望这会将“a”更改为“游戏”