[疑难] 极度郁闷的问题
hohoyeh
2007-09-23
以下代码可以编译通过:
import std.stdio; int main() { char[5] a = "hello"; writefln("%s",a); return 1; } 但是如果我改成 char[] a = "hello"; 为什么就不行?? D:\DProjects\HelloDLang\Main\hello.d(56): Error: cannot implicitly convert expression ("hello") of type invariant char[5u] to char[] char[] 不是动态数组吗?? 我用的是dmd2.004 + poseidon |
|
oldrev
2007-09-23
错误信息很明确,"hello" 的类型是 invariant char[5],而不是 char[]
可以改成 const(char)[] a = "hello"; 或者用标准库定义的 alias: string a = "hello"; |
|
hohoyeh
2007-09-23
谢谢了。我也看明白了错误信息,只是不理解为什么不能隐式转换它。动态数组的特性就应该支持才对撒。
|
|
Colorful
2007-09-23
静态数组的确可以隐式转换成动态数组,但是对于字符串常量来说,应当区别对待,因为它的类型是const(char)[]。
|
|
oldrev
2007-09-23
2.0 的 constness 还在争论,作者也承认设计有问题,不推荐学习 2.0
|
|
tomqyp
2007-09-23
应该在圈子的D说明一下2.0和1.0的区别,要不然许多人都会习惯性的使用版本号比较高的.
|
相关讨论
相关资源推荐
- WTL for MFC Programmers英文版PDF,附演示代码
- WTL For MFC Programmer(中文版)
- WTL for MFC Programmers.PDF
- MFC程序员的WTL开发指南PDF
- WTL for MFC programmer
- SpringSource Hops On Cloud Messaging with RabbitMQ
- SpringSource dm Server 2.0.1 Released
- Red Hat Reacts to SpringSource Leadership
- Enterprise Java通常指的是Java EE(Java Platform, Enterprise Edition),这是一个广泛用于开发和运行大型级别的企业级应用的Java平台
- Open Source, Open Strategy: The SpringSource Manifesto