我正在按照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
}
}
另外,在这个特定的教程部分中有一段非常困难的时间。
提前致谢,在诊断问题时,我们非常感谢您的帮助!
答案 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
}
}
你需要更加小心地编写代码。