Макрос C ++: как создать перезапись? - PullRequest
0 голосов
/ 06 марта 2011

Поэтому я обнаружил необходимость использовать что-то вроде Boost.Extension , чтобы мои приложения были более открыты для новых модулей.Но как только я добрался до первого урока , я обнаружил, что его синтаксис совсем не такой, как я привык:

// 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 ]

1 голос
/ 06 марта 2011

Вы могли бы просто написать следующее:

#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;
  }
}
0 голосов
/ 06 марта 2011

Вы можете заменить 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.

0 голосов
/ 06 марта 2011
#define function BOOST_EXTENSION_EXPORT_DECL
...