我正在努力将一些旧的K&R代码移植到ANSI C,所以我正在编写缺少的函数原型声明.很多函数定义都有寄存器存储类的参数,但是我不确定函数原型中是否可以省略寄存器存储类说明符?
有和没有寄存器存储类特定声明,代码编译正确(我尝试了GCC,VC++和Watcom C).我在ISO/ANSI C89标准中找不到任何关于正确方法的信息 - 如果我只是将register关键字放在函数定义中就可以了吗?
int add(register int x, register int y);
int add(register int x, register int y)
{
return x+y;
}
Run Code Online (Sandbox Code Playgroud)
这也正确构建:
int add(int x, int y);
int add(register int x, register int y)
{
return x+y;
}
Run Code Online (Sandbox Code Playgroud)
我想确保根据标准真正考虑寄存器存储说明符(我的目标是使用非常旧的编译器进行编译,其中此存储类说明符很重要).两者都好,这只是一个编码风格的问题,或不是?