为了学习如何使用ca65汇编程序,我一直在努力使include guards起作用。谷歌搜索和阅读《ca65用户指南》无济于事。这是产生错误的最小示例。
$ ls -l
total 16
-rw-r--r-- 1 me staff 60 Oct 22 19:40 65.inc
-rw-r--r-- 1 me staff 55 Oct 22 20:01 test.s
$
$ cat 65.inc
.ifndef _65_INC_
.define _65_INC_
.define NUMBER 1
.endif
$
$ cat test.s
.include "65.inc"
.include "65.inc"
lda #NUMBER
rts
$
$ ca65 test.s
65.inc(1): Error: Identifier expected
65.inc(2): Error: Identifier expected
65.inc(4): Error: Identifier expected
65.inc(4): Note: Macro was defined here
$
$ ls -l
total 16 …Run Code Online (Sandbox Code Playgroud) 我对 Perl 有点陌生,这个错误让我困惑了几天。我很难在谷歌上找到任何关于这个特定问题的东西。我会尽量清楚地呈现“线索”。我正在使用 Perl v5.16.1。我的代码中的相关行是这些:
my %result = ();
...
$result{'TABLENAME'} = $tableName;
...
for my $i (1..$numberOfColumns) {
$result{$columnNames[$i-1]} = $columnValues[$i-1];
}
Run Code Online (Sandbox Code Playgroud)
在我的测试中,$numberOfColumns是 7。问题是 for 循环没有像我期望的那样创建键值对。我会解释。我试过使用 Perl 的调试器和perl -d. 下面的调试器输出显示在最后一行之前一切正常。
DB<2> c 219
testcode::testsub(modules/testcode.pm:219):
219: $result{'TABLENAME'} = $tableName;
DB<3> c 239
testcode::testsub(modules/testcode.pm:239):
239: for my $i (1..$numberOfColumns) {
DB<4> p %result
TABLENAMEmyowntableitis
DB<5> p $result{TABLENAME}
myowntableitis
DB<6> s
testcode::testsub(modules/testcode.pm:240):
240: $result{$columnNames[$i-1]} = $columnValues[$i-1];
DB<6> p $i
1
DB<7> p $columnNames[0]
id
DB<8> p $columnValues[0]
1 …Run Code Online (Sandbox Code Playgroud)