1
这是我的主文件(一触发错误):奇怪的错误导入时模块
/**********************************************************
**
** LOGRAMM
** Interpreter
**
** (c) 2009-2014, Dr.Kameleon
**
**********************************************************
** expression.d
**********************************************************/
module expression;
//================================================
// Imports
//================================================
import std.stdio;
import std.conv;
import components.argument;
//================================================
// C Interface for Bison
//================================================
extern (C)
{
void* Expression_new(Expression l, char* op, Expression r) { return cast(void*)(new Expression(l,to!string(op),r)); }
void* Expression_newFromArgument(Argument a) { return cast(void*)(new Expression(a)); }
}
//================================================
// Functions
//================================================
class Expression
{
Expression left;
string operator;
Expression right;
Argument arg;
this(Expression l, string op, Expression r)
{
left = l;
operator = op;
right = r;
arg = null;
}
this(Argument a)
{
arg = a;
}
void print()
{
writeln("Expression: ");
if (!arg)
{
writeln("\t | Operator: " ~ operator ~ ", Left: ");
left.print();
writeln("Right: ");
right.print();
}
else
{
writeln("\t | Argument: ");
arg.print();
}
}
}
这是我得到错误(有喜欢的20个不同的模块,它是第一次我得到这种类型的错误的):
components/expression.d(21): Error: module argument from file components/argument.d must be imported as module 'argument'
(21开头的import...
线)
任何想法这里发生了什么?
P.S.
我一直在编码连续近15个小时,所以我想这可能是一些真的明显,我不能够发现...
我以前也试过
import argument;
- 但这没有太大的差别,无论如何,由于argument.d
文件是在components
包,很像是我进口在其他地方的任何其他文件...
那么,'进口论点;'的想法不*工作。但最后一个,工作很好!非常感谢!你为我节省了很多时间! :-) –
是的,规则应该是,如果一个文件被导入到任何地方,确保它包含一个明确的'module name.here;'在它的顶部,每一次,最终这种事情都会咬你。 –