簡體   English   中英

預處理器宏中的typedef

[英]typedef in Preprocessor macro

我有一個這樣的宏定義,可以輕松地為一個類創建一個shared_ptr:

#define create_ptr(__TYPE__) typedef std::shared_ptr<__TYPE__>

我現在想要的是在類名后附加“ Ptr”,這樣

create_ptr(MyClass)

會導致一個名為MyClassPtrtypedef作為std::shared_ptr<MyClass>怎么做?

您需要令牌串聯##

#define create_ptr(__TYPE__) typedef std::shared_ptr<__TYPE__> __TYPE__ ## Ptr;

class Foo{
public:
};

create_ptr(Foo)

FooPtr foo;

有關詳細說明,請參見此處https://gcc.gnu.org/onlinedocs/cpp/Concatenation.html

另一種途徑是使用聲明:

template <typename T>
using sp = std::shared_ptr<T>;

sp<int> my_shared_int_pointer ....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM