我的任务是将 C 程序从 iSeries/AS400 转换为 .NET。自从我研究 C 以来已经有一段时间了,而且我以前从未在 iSeries 上使用过 C。我看到诸如
main(int argc, char *argv ??(??))
我不确定是什么??是为了。根据这里的用法,我假设它是用于数组的,但想在我走错路之前先确定一下。
我的任务是将 C 程序从 iSeries/AS400 转换为 .NET。自从我研究 C 以来已经有一段时间了,而且我以前从未在 iSeries 上使用过 C。我看到诸如
main(int argc, char *argv ??(??))
我不确定是什么??是为了。根据这里的用法,我假设它是用于数组的,但想在我走错路之前先确定一下。
??(
等价于[
和??)
等价于]
。这些被称为三元组,在对代码进行任何其他操作之前,它们会被预处理器替换。这是其他三元组的列表。
它被称为Trigraph:
C11(ISO/IEC 9899:201x) §5.2.1.1 三字序列
在进行任何其他处理之前,以下三个字符的序列之一(称为三字符序列17))的每次出现都被相应的单个字符替换。
??= #
??( [
??/ \
??) ]
??' ^
??< {
??! |
??> }
??- ~
所以代码
main(int argc, char *argv ??(??))
转向
main(int argc, char *argv [])