[疑难] 请教函数调用问题等问题

sofire 2007-08-08
// 网络地址 到 IP地址的转换
char[] long2ip(ulong ip)
{
    in_addr myaddr;
    myaddr.s_addr = htonl(ip);
    return toString(inet_ntoa(myaddr)).dup; // 这里需要一个dup?
}
htonl和inet_ntoa调用的Linux C库

上面最后一个语句是不是需要加.dup。只是不加,程序会有奇怪的bug。
不大理解这是怎么回事。

有没有类似php中的var_dump函数,它能把所有的变量的类型和值都打印出来。
便于调试:)

我用auto 来申明一个变量,因为不想思考具体是什么类型的。
不知道auto是不是拿来偷懒的?

oldrev 2007-08-08
1. inet_ntoa 返回的是它内部一个 static 字符串缓冲区,不是D的一部分,需要用.dup为它创造一个D版的副本,2.0有了 constness就可以解决这个问题
2. D是静态语言,编译以后类型都丢失了,不可能反射出所有的变量和类型,不过调试版本会保留符号。
3. auto 的主要用途在于免去范型编程中的复杂类型推导
Global site tag (gtag.js) - Google Analytics