什么是register关键字在C语言吗?我已经读过它用于优化,但在任何标准中都没有明确定义.它是否仍然相关,如果是,你什么时候使用它?
我是C的新手.我遇到过一种我以前从未见过的函数语法形式,参数类型在参数列表之后定义.有人可以向我解释它与典型的C函数语法有何不同?
例:
int main (argc, argv)
int argc;
char *argv[];
{
return(0);
}
Run Code Online (Sandbox Code Playgroud) 我正在努力将一些旧的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)
我想确保根据标准真正考虑寄存器存储说明符(我的目标是使用非常旧的编译器进行编译,其中此存储类说明符很重要).两者都好,这只是一个编码风格的问题,或不是?