Я наткнулся на этот код, вовлеченного VARIADIC макросами, и я хотел бы знать, что это значитVARIADIC Макросы
#define DECLARE_LEGACY_TYPES(...) //This all of the macro - I am not holding out on anything
Теперь Существует этот класс, как это
Header file: .h
namespace LG_Wrapper
{
template <LG_Thread Thread>
class EffectApplication : public ktApplication
{
public:
static EffectApplication<Thread>& GetInstance();
protected:
.....
.....
static boost::recursive_mutex mResource;
}
}
DECLARE_LEGACY_TYPES(EffectApplication); <---- What does this do ?
Я хотел бы знать, какой эффект макрос?
Update: Я получил многочисленные downvotes на этом, как этот вопрос дает от впечатления, что что-то не хватает, что я не отправлял все содержимое макроса. Макрос не больше. Хотелось бы. Этот вопрос связан с this, который был закрыт. Макрос буквально заканчивается после (...)
#define DECLARE_LEGACY_TYPES(...)
но нет. Это одна из причин, почему я здесь, так как я не уверен, как справиться с этой ситуацией. Не действует ли этот макрос?
Дополнительная информация:
Это то, что я в другом файле Я использую следующие определенные в моей заходящего
LG_WRAPPER_EXPORTS
LG_THREAD_NAME=GAME
После проекта код
namespace LG_Wrapper
{
enum LG_Thread
{
GAME,
OTHER
};
/*
If the library itself is including this file
*/
#ifdef LG_WRAPPER_EXPORTS
#ifndef LG_THREAD_NAME
#error You must define LG_THREAD_NAME!
#endif
//Legacy types should not be used internally
#define DECLARE_LEGACY_TYPES(...)
#else // LG_WRAPPER_EXPORTS
//Legacy typenames are provided for convenience to the client
#define DECLARE_LEGACY_TYPES(ClassType) \
typedef LG_Wrapper::##ClassType##<LG_Wrapper::GAME> ClassType; \
#endif // LG_WRAPPER_EXPORTS
}
Здесь просто пропустить что-то, что стало бесполезным. –
Может ли #define использоваться с "..." следующим образом? Похоже, там чего-то не хватает. – AlainD
@AlainD: Да, переменные макросы. https://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html Но это не распространяется на ничего. –