C++宏不起作用

C++ Macro Not Working

本文关键字:不起作用 C++      更新时间:2023-10-16

我定义的宏函数似乎不起作用。

主.cpp:22:3:错误:未知类型名称"A">
a *应用 = 新 a;

^ 主.cpp:22:16: 错误: 未知类型名称"A">
a *应用 = 新 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;                                       
}

我怀疑您正在尝试将宏用作typedef.

看起来你的意思是:

typedef game a;

然后你可以做这样的行:

a* 应用程序 = 新的 a;

将宏定义为:

#define DECLARE_MAIN(a) 
do {
    a *app = new a; 
    app->run(app);
    delete app;
} while (0)

与其写int main,不如写

在 main 内部,您可以执行以下操作:

int main(int argc, char **argv) {
    DECLARE_MAIN(game);
    return 0;
}