m*****n 发帖数: 2152 | 1 如下的macro怎么用inline function改写?
#define PrintSize(type) \
cout << "size of " << #type << " is " << sizeof(type) << endl;
example:
PrintSize(char); will show "size of char is 1" . |
M********5 发帖数: 715 | 2 #define PrintSize(type) \
do{ \
cout << "size of " #type << " is " << sizeof(type) << endl; \
} while(0) |
m*****n 发帖数: 2152 | 3 ?? 这个是inline function?
【在 M********5 的大作中提到】 : #define PrintSize(type) \ : do{ \ : cout << "size of " #type << " is " << sizeof(type) << endl; \ : } while(0)
|
M********5 发帖数: 715 | |
M********5 发帖数: 715 | 5 inline function难道是考你用template来写? |
l********n 发帖数: 54 | |
A*********r 发帖数: 564 | 7 函数参数不能变的话,有点难,毕竟C++ 的函数必须是已经定义好type的,即
使是有void指针,也是需要cast才能用的。。
除非写几个不同参数的同一个函数,这样可以达到相同的效果。。
【在 m*****n 的大作中提到】 : 如下的macro怎么用inline function改写? : #define PrintSize(type) \ : cout << "size of " << #type << " is " << sizeof(type) << endl; : example: : PrintSize(char); will show "size of char is 1" .
|
l********n 发帖数: 54 | 8 那如何把type作为参数传入inline函数呢? |
l********n 发帖数: 54 | 9 用template只能做到这样,不过#type想不出如何打印出来
#include
using namespace std;
template
inline void PrintSize()
{
cout<<"sizeof "<<" is " << sizeof(T)<
}
int main(void)
{
PrintSize();
return 1;
}
【在 M********5 的大作中提到】 : inline function难道是考你用template来写?
|
x***y 发帖数: 633 | 10 int a;
typeid(a).name(); //will output int
【在 m*****n 的大作中提到】 : 如下的macro怎么用inline function改写? : #define PrintSize(type) \ : cout << "size of " << #type << " is " << sizeof(type) << endl; : example: : PrintSize(char); will show "size of char is 1" .
|
l********n 发帖数: 54 | 11 great! Then, following code should work.
#include
#include
using namespace std;
template
inline void PrintSize()
{
cout<<"size of "<< typeid(T).name()<<" is " << sizeof(T)<
}
struct A
{
int a;
double b;
};
int main(void)
{
PrintSize();
PrintSize();
PrintSize();
return 1;
}
【在 x***y 的大作中提到】 : int a; : typeid(a).name(); //will output int
|
r**u 发帖数: 1567 | 12 Here typeid is applied to a variable.
But, you are applying it to a type (T).
Seems not right. |
h**k 发帖数: 3368 | 13 typeid既可以用变量作参数,也可以用类型作参数。
【在 r**u 的大作中提到】 : Here typeid is applied to a variable. : But, you are applying it to a type (T). : Seems not right.
|
x****k 发帖数: 2932 | 14 The return value of typeid really depends on the implementation of compiler.
sometimes, it returns some weird mangled string. |