我只是尝试阅读一些C语言的源代码。 我在
<ctype.h>
文件中遇到了一些奇怪的语法。
有人可以解释语法或给我一些关于它的含义的参考吗?
extern const unsigned short int **__ctype_b_loc (void)
__THROW __attribute__ ((__const__));
我知道它应该是一个全局变量的一些定义,但是语法分为两行,并且在变量定义之后(
__ctype_b_loc
之后)还有很多额外的东西
这是函数声明,
extern
指定这个函数的定义在另一个源文件或库中提供,函数名为__ctype_b_loc
,它不带参数(void)
并返回一个指向数组指针的指针unsigned short int
的,const
意味着它返回的数据不能被修改所以我猜这个声明被C库实现内部使用。
这个声明只是一个带有额外不可移植属性的函数原型:
extern const unsigned short int **__ctype_b_loc(void);
__THROW
标识符可能意味着该函数在 C++ 上下文中使用时可以抛出异常。
__attribute__((__const__))
表示该函数是纯,即:返回值仅取决于参数,因此在程序运行期间将保持不变。
此函数用作
<ctype.h>
系统实现的一部分,它可能返回一个指向内部数据的指针,用作 unsigned int
标志的数组或由 isxxx(c)
和 toxxx(c)
宏使用的数组,此标头中定义.