在主源文件名中使用短划线字符

时间:2017-03-15 09:11:19

标签: d

我尝试使用llvm D编译器编译文件hello-world.d并收到此消息:

Error: module hello-world has non-identifier characters in filename,
use module declaration instead

我查看了什么是模块声明的文档,然后添加了

module hello_world;

到我文件的顶部。然后编译hello-world文件。请解释为什么需要,如果我的主文件我应该使用什么模块名称。

2 个答案:

答案 0 :(得分:2)

在D中,标识符必须仅包含字母,数字或下划线字符。模块名称也是包含其中包的标识符。

对于拉丁字符集,字母字符是a-z和A-Z。非拉丁语言使用的其他字符集也可以使用(utf-8支持)。

没有什么特别的,但请记住,模块(包括包)需要匹配文件系统名称以便查找(例如导入)。

答案 1 :(得分:2)

简而言之 - 如果您不为模块命名,D编译器将使用文件名(不带扩展名)作为模块名称。

因此,如果您将D源文件命名为hello-world.d,并且它在源文件的顶部没有module hello_world;之类的内容,则编译器将实际尝试插入和编译{{ 1}}这将失败,因为module hello-world;不是有效的标识符。

如果文件名为hello-world作为示例,那么编译器将实际编译具有自动生成名称hworld.d的模块。