4

我的任务是将 C 程序从 iSeries/AS400 转换为 .NET。自从我研究 C 以来已经有一段时间了,而且我以前从未在 iSeries 上使用过 C。我看到诸如

main(int argc, char *argv ??(??))

我不确定是什么??是为了。根据这里的用法,我假设它是用于数组的,但想在我走错路之前先确定一下。

4

2 回答 2

7

??(等价于[??)等价于]。这些被称为三元组,在对代码进行任何其他操作之前,它们会被预处理器替换。这是其他三元组的列表。

于 2013-08-01T14:38:09.040 回答
3

它被称为Trigraph

C11(ISO/IEC 9899:201x) §5.2.1.1 三字序列

在进行任何其他处理之前,以下三个字符的序列之一(称为三字符序列17))的每次出现都被相应的单个字符替换。

??=    #
??(    [
??/    \
??)    ]
??'    ^
??<    {
??!    |
??>    }
??-    ~

所以代码

main(int argc, char *argv ??(??))

转向

main(int argc, char *argv [])
于 2013-08-01T14:51:08.750 回答