C ++ Macro:如何创建覆盖?

时间:2011-03-06 20:30:54

标签: c++ boost macros naming-conventions

所以我发现需要使用像Boost.Extension这样的东西来让我的应用程序对新模块更加开放。但是当我到first tutorial时,我发现它的语法与我习惯的不一样:

// Depending on the compiler and settings,
// it may be necessary to add a specific export
// declaration. The BOOST_EXTENSION_EXPORT_DECL
// adds this if necessary.
void BOOST_EXTENSION_EXPORT_DECL
boost_extension_hello_world(int repetitions) {
  for (int i = 0; i < repetitions; ++i) {
    std::cout << "Hello World" << std::endl;
  }
}

我想写一些像void function而不是void BOOST_EXTENSION_EXPORT_DECL这样的东西看起来更好,因为我有AS3背景,对我来说看起来不会太可怕。

那么如何为C ++宏创建一个覆盖,而不是在它定义的头文件中但是在你自己的C ++文件中?

3 个答案:

答案 0 :(得分:1)

您之前可以写下以下内容:

#define function BOOST_EXTENSION_EXPORT_DECL

然后说出这样的函数:

void function
boost_extension_hello_world(int repetitions) {
  for (int i = 0; i < repetitions; ++i) {
    std::cout << "Hello World" << std::endl;
  }
}

答案 1 :(得分:0)

#define function BOOST_EXTENSION_EXPORT_DECL

答案 2 :(得分:0)

您可以将BOOST_EXTENSION_EXPORT_DECL替换为function

#define function BOOST_EXTENSION_EXPORT_DECL 

然后您可以通过以下方式使用它:

void function boost_extension_hello_world(int repetitions) {
  for (int i = 0; i < repetitions; ++i) {
    std::cout << "Hello World" << std::endl;
  }
}

但如果您的代码包含单词function,这可能会导致问题,因为编译器会替换所有function