Z/OS大型机中C代码char foo(|10|)声明的含义是什么?
关于Z/OS上K&R C代码中
char foo(|10|);的解析 - 这是IBM Z/OS编译器针对老式大型机键盘的兼容写法,并非标准C语法或通用编译器扩展。
- 早期大型机终端键盘可能未配备
[]方括号按键,IBM为适配该场景,允许用|竖线替代方括号声明数组。char foo(|10|);完全等价于标准C的char foo[10];,是一个长度为10的字符数组局部变量。 - 从代码后续用
strcpy/strcat写入字符串、作为fopen参数的用法来看,它的行为和普通字符数组完全一致,也验证了这一等价性。 - 这种写法是Z/OS环境特有的历史兼容特性,仅存在于针对大型机的老式编译器版本中,现代标准C编译器(包括Z/OS上的新版本编译器)已不再需要这种写法,建议优先使用标准
[]语法。
内容的提问来源于stack exchange,提问作者gbronner
相关产品推荐
相关产品推荐

