求一个能够打印任何struct类型大小的函数

vipcowrie 2008-01-30 03:07:16
求一个能够打印任何struct类型大小的函数

我原来的写法编译不通过的:void print_stack_size(char *name,void* the_struct) {
printf("struct %s's size=%dbytes",name,sizeof(*the_struct));
}

有没有其他办法?
...全文
151 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
不会,帮顶
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
不会,帮顶
NKLoveRene 2008-01-31
  • 打赏
  • 举报
回复
其实就像sizeof(int),sizeof(double)一个意思
里面放类型名就是了
snailman 2008-01-31
  • 打赏
  • 举报
回复
给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,给我分数,
snailman 2008-01-31
  • 打赏
  • 举报
回复
vipcowrie 赶紧结贴把分给俺,俺要多回答问题,挣分呢,好过年呢~!
snailman 2008-01-31
  • 打赏
  • 举报
回复
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
给我分
vipcowrie 2008-01-30
  • 打赏
  • 举报
回复
已经结贴,snailman 中奖。:)
woshinanren 2008-01-30
  • 打赏
  • 举报
回复
直接传值,参数的类型怎么搞定?
独孤过儿 2008-01-30
  • 打赏
  • 举报
回复
传个结构的指针过去,当然是四了。想要结构的大小,直接按传值的方式传进去就行了
vipcowrie 2008-01-30
  • 打赏
  • 举报
回复
强,用函数模板可以搞定。
snailman 2008-01-30
  • 打赏
  • 举报
回复
template<typename   T> 
void print_stack_size(char *name)
{
printf("struct %s's size=%dbytes",name,sizeof(T));
}

typedef struct tagTest
{
int i;
int j:4;
int k:4;
}TEST;

print_stack_size <TEST> ("TEST");

我晕死,每次弄个代买总是写不上去,NND~!
snailman 2008-01-30
  • 打赏
  • 举报
回复
template   <typename   T> 
void print_stack_size(char *name)
{
printf("struct %s's size=%dbytes",name,sizeof(T));
}

type tagTest
{
int i;
BYTE j:4;
BYTE k:4;
}TEST;

print_stack_size <TEST> ("TEST");
snailman 2008-01-30
  • 打赏
  • 举报
回复
temlate <typename T>
void print_stack_size(char *name)
{
printf("struct %s's size=%dbytes",name,sizeof(T));
}

type tagTest
{
int i;
BYTE j:4;
BYTE k:4;
}TEST;

print_stack_size<TEST>("TEST");
BluntBlade 2008-01-30
  • 打赏
  • 举报
回复
#include <stdio.h>

#define print_size(type) \
do \
{ \
printf("The size of '" #type "' is %d.\n", sizeof(type)); \
} while (0)

void main(void)
{
print_size(int);
}
vipcowrie 2008-01-30
  • 打赏
  • 举报
回复
不行,这样得到的是指针类型(int)的大小4,不是结构体本身的大小啊。
BluntBlade 2008-01-30
  • 打赏
  • 举报
回复
#define print_size(type) \
do \
{ \
printf("The size of '" #type " is %d.\n", sizeof(type)); \
} while(0) \
Dr.Yao 2008-01-30
  • 打赏
  • 举报
回复
printf("struct %s's size=%dbytes",name,sizeof(*the_struct));
改成
printf("struct %s's size=%dbytes",name,sizeof(the_struct));

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧