gbr*_*ner 99 c mainframe ebcdic zos
我是一位非常有经验的 C 程序员,但最近我在大型机上遇到了一些具有局部变量的代码。这是在一个简单的 C 函数中声明此变量,然后strcpy
将strcat
两个字符串放入其中,然后尝试使用fopen
.
char foo(|10|);
Run Code Online (Sandbox Code Playgroud)
这段代码很旧了。甚至可能是 K&R C 旧的。我想知道这是否是一些晦涩的编译器扩展或对没有 [] 或类似内容的键盘的适应。
有人知道这个声明是否“特殊”吗?
这是一个标准的 Z/OS 大型机。我不确定使用什么编译器。
Nat*_*dge 108
它似乎是有向字母的早期或非标准形式。该代码可能是使用EBCDIC而不是 ASCII 编写的,并且 EBCDIC 没有[ ]
字符(至少不是在所有代码页中)。
我找到了SAS/C 的手册,这是一个显然适用于 System/370 的 C 编译器。在第 2-10 页(pdf 第 42 页)上,您可以看到它们(| |)
列为[ ]
.
(虽然显然|
也不在所有代码页中;但也许它在更常用的代码页中?我不知道。)
C99 还包含二字母(和三字母)来解决相同的问题,但它们用作<: :>
二字母和??( ??)
三字母。