警告:C中的函数必须是外部错误

时间:2014-11-13 02:59:08

标签: c assembly

我正在按照6502 Assembly中的C编程教程进行操作,并且在第3步中遇到了很多困难。在命令行中编译我的代码时,我得到以下错误:

test4.c(8):错误:'{'期望

test4.c(9):警告:函数必须是extern

test4.c(9):错误:';'预期

test4.c(13):错误:'}'预期

我正在使用一个程序将code :: blocks中生成的.c文件编译为.nes文件。当前的教程让我在编译它的程序中在Windows的cl65命令行中编译时也会生成.s程序集文件。这是我所在的教程页面的链接: https://helloacm.com/tutorial-3-c-programming-in-6502-using-assembly/

我已经尝试了许多不同的代码组合,我可以想到尝试去除至少一些问题,但是无济于事。我是C的业余爱好者,通常使用C ++,但我不能,仍然试图解决这个问题。我无法通过快速谷歌搜索找到“功能必须是外部”错误。任何人都知道发生了什么事?

以下是我在code :: blocks中编写代码的方法:

void main()
{
    asm("nop");
}

void testasm()

void main()
{
    while(1) {
    testasm(); // call the assembled function
}
}

另外,在这个特定的教程部分中有一段非常困难的时间。

提前致谢,在诊断问题时,我们非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

也许这就是你要追求的目标?

void testasm()
{
    asm("nop");
}

void main()
{
    while(1) {
        testasm(); // call the assembled function
    }
}

您的代码有两个main()函数和一个没有终止分号的原型void testasm()


或者,如果在汇编中编写testasm,则代码应如下所示(删除额外的main函数):

extern void testasm();    // `extern` not specifically required, but may be for
                          // your particular compiler

void main()
{
    while(1) {
        testasm(); // call the assembled function
    }
}

你需要更加小心地编写代码。