对C ++中函数的未定义引用

诺兰·布拉德肖(Nolan Bradshaw)

我不断收到一个错误有RangeCheckreadprntword错误是:

undefined reference to RangeCheck(short, short, short)

undefined reference to read(short*, bool)

undefined reference to prntword(short)

我试图更改放置函数的位置(在main上方,在main上方),但是我不知道该如何解决该错误。

#include <stdio.h>
#include <stdlib.h>

#define READ  10
#define WRITE 11
#define LOAD  20
#define STORE 21
#define ADD   30
#define SUBTRACT 31
#define DIVIDE 32
#define MULTIPLY 33
#define BRANCH 40
#define BRANCHNEG 41
#define BRANCHZERO 42
#define HALT  43
#define CELLS 100
#define RANGE 9999
#define SENTINEL -1

#define DEBUG 0

short RangeCheck(short word, short min, short max);
char* prntword(short word);
bool read(short *data, bool check);

int main()
{

    bool error = false;
    char *word, OperationCode, Operand;
    short memory[CELLS], InstructionRegister;
    int counter, Accumulator;
    Accumulator = 0;

    for (int i = 0; i < CELLS; i++) {
        memory[i] = 0;
    }

    for (counter = 0; !error; counter++); {
        counter = RangeCheck(counter, 0, CELLS - 1);
        InstructionRegister = memory[counter];
        OperationCode = InstructionRegister / 100;
        Operand = InstructionRegister % 100;
    } 

    switch(OperationCode) {
        case READ:
            read(&memory[Operand], false);
            break;
        case WRITE:
            printf("%s\n", word = prntword(memory[Operand]));
            break;
        case LOAD:
            Accumulator = memory[Operand];
            break;
        case STORE:
            memory[Operand] = RangeCheck(Accumulator, -RANGE, RANGE);
            break;
        case ADD:
            Accumulator += memory[Operand];
            break;
        case SUBTRACT:
            Accumulator -= memory[Operand];
            break; 
        case DIVIDE:
            Accumulator /= memory[Operand];
            break;
        case MULTIPLY:
            Accumulator *= memory[Operand];
            break;
        case BRANCH:
            break;
    }
}
索伦

尝试更换

short RangeCheck(short word, short min, short max);
char* prntword(short word);
bool read(short *data, bool check);

short RangeCheck(short word, short min, short max){return 1;}
char* prntword(short word){return 0;}
bool read(short *data, bool check){return 0;}

并且应该为您编译(但是可能无法按预期工作)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章