[疑难] 请教函数调用问题等问题
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 的主要用途在于免去范型编程中的复杂类型推导 |