导入模块时出现奇怪的错误

时间:2014-04-11 18:56:19

标签: c d dmd

这是我的主文件(触发错误的文件):

/**********************************************************
 **
 ** 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个不同的模块,这是我第一次遇到这种类型的错误): / p>

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文件 包,就像我在其他地方导入的任何其他文件一样......

1 个答案:

答案 0 :(得分:2)

尝试通过import argument;导入模块。或者,打开argument.d模块并将其模块声明添加或更改为:module components.argument;