Tag: 规范

C原型范围

我了解到了 在函数原型(不是函数定义的一部分)中的参数声明列表中声明标识符的类型说明符,标识符具有函数原型作用域,它终止于函数声明符的末尾。 请参阅下面提到的C程序。 void fn (struct st {int a;} a, struct st b) ; struct st obj ; 编译器会立即发出错误,因为’obj’大小未知(或)struct st不是’type’。 那就对了! 结构’struct st’的声明在原型声明中结束。 我相信原型有这个限制因为我们也可以在原型声明中使用一些变量名。 这些名称可能与同一范围内的变量(与函数原型的变量)冲突。 如下。 void fn (int a) ; int a ; 因此,为了允许上述声明,原型的范围是有限的。 (如果我错了,请纠正我) 但是,对于原型声明,参数变量名称没有用。 那么,为什么它是“狭隘的范围”? 拥有参数变量名称有什么意义? 什么是语言设计者(或)规范对此的想法?

如何将JVM跳转指令的偏移量设置为32768?

在写一个关于JVM字节代码偏移的问题的答案时 ,我注意到javac的行为以及我无法解释的结果类文件: 编译这样的类时 class FarJump { public static void main(String args[]) { call(0, 1); } public static void call(int x, int y) { if (x < y) { y++; y++; // … (10921 times – too much code to post here!) y++; y++; } System.out.println(y); } } 然后生成的字节代码将包含以下if_icmpge指令: public static void call(int, int); Code: 0: […]