作者devon5 (Dev一)
看板C_and_CPP
标题[问题] C语言的函数是否能回传不同型态
时间Thu Mar 19 19:27:04 2009
大家好,想请问一个有关於C的问题。
我想要利用C来模拟PHP的程式,但最大的问题在於变数的型态
目前是打算利用union和struct来记录变数的资讯
union代表一些基本的变数型态,
而struct中的tag_type则代表目前union中的变数种类
我原先是打算利用判断tag_type中的值来读取该变数相对应的栏位
例如:
if( tag_type==0)
return v.inum
else if( tag_type==1)
return v.fnum
...
但是似乎没有办法只单靠一个function来完成,
因为function一次只能有一种回传型态。
不知道有办法只靠一个function完成这种功能吗?
还是要用C++才比较有可能?
谢谢大家
以下为程式码部分:
union value{
int inum;
//整数
float fnum;
//浮点数
char * str
//字串
};
struct var{
int tag_type;
//union中的变数型态
union value v;
};
int main(void){
struct var a,b,c;
float d;
int i;
a.tag=0; //int
a.v.inum=10;
b.tag=1; //float
b.v.fnum=1.1;
c.tag=2; //char*
c.v.str="apple";
d=func(a)+func(b); //能写出一个function自动抓出正确的数值吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.166.151.237
※ 编辑: devon5 来自: 218.166.151.237 (03/19 19:27)
1F:推 hylkevin:不行 用MACRO 03/19 19:57
2F:→ bleed1979:如果是C++的话 template可不可行呢? 03/19 20:20
3F:推 hylkevin:物件的type是执行期决定的 template是编译期就决定了 03/19 22:24
4F:推 sunneo:你可以定义func(a)回传一个 具有operator+的物件 03/19 22:45
5F:→ sunneo:当碰到func(b)该对tag做什麽动作就是你自己写的了 03/19 22:46
6F:→ MOONRAKER:想说C way大概就是用void * 03/19 23:01
7F:→ devon5:谢谢大家的回应 03/20 12:32