关于D中 字符串的问题

player7 2007-04-20
最新版本的DMD 例程中,在 chello.d这个文件中,有这么一句;
MessageBoxA(null,"CHello.~this()",null,MB_OK);

它的原型是:int MessageBoxA(HWND, LPCSTR, LPCSTR, UINT);
而且:alias CHAR *LPCSTR;


看来直接传入字串常量是OK的,没问题。


在GOOGLECODE上搜了搜,似乎也都是这么用的。
只有在 字符串为变量时,才使用 toStringz()
qiezi 2007-04-20
这种还是应该避免的。许多API都基于C的null结尾字符串,这个东西害人不浅,虽然省了内存,但一些使用长度前缀的字符串的语言为了兼容它会增加内存拷贝、增加内存使用、降低效率。即便是C运行库里面许多方法也是低效的,比如strlen,肯定不如使用长度前缀来得快。
oldrev 2007-04-20
不要依靠巧合编程