据我了解,register说明符提示编译器将变量存储在寄存器中。XKBlib.h这一切都很好,直到我在Xorg-7.7中遇到以下声明:
extern int XkbTranslateKeySym(
Display * /* dpy */,
register KeySym * /* sym_return */,
unsigned int /* modifiers */,
char * /* buffer */,
int /* nbytes */,
int * /* extra_rtrn */
);
注意如何sym_return作为指针传递给寄存器变量。让我想知道的是
- 尽管不可能获取寄存器变量的地址,但这似乎是允许的,
- 在函数声明中提到这似乎很重要。
第 1 点似乎在某种程度上无效,因为我似乎能够将指针传递给非register变量,即使使用-pedantic-errorsGCC 的标志也是如此。
register那么,与省略关键字的声明相比,此声明有何变化?它会改变调用约定还是什么?