Code Bye

math.h文件中关于 #define _ARMABI __declspec(__nothrow)的问题

在math.h 中有如下定义
#ifndef __math_h
#define __math_h
//...
#define _ARMABI __declspec(__nothrow)
#define _ARMABI_PURE __declspec(__nothrow) __attribute__((const))
//...
/* C99 float versions of functions.  math.h has always reserved these
   identifiers for this purpose (7.13.4). */
extern _ARMABI float sinf(float /*x*/);
extern _ARMABI float cosf(float /*x*/);
extern _ARMABI float  (float /*x*/);

问一下 这个__declspec(__nothrow) 是什么意思? 没有见过这种格式
还有下面的sinf, cosf,tanf 看起来像是三角函数,这个是函数体吗?其中的下划线有什么特殊含义吗?

inline float atan(float __x)  { return atanf(__x); }
解决方案

20

__declspec(__nothrow)
函数修饰符,告诉编译器,这个函数不会抛出异常

40

后面的怎么不是函数,是函数的,是函数声明,至于函数体,是库里面的,我们不用管,__x是参数名,参数可以以下划线开头不是

80

nothrow:
格式:return-type __declspec(nothrow) [call-convention] function-name ([argument-list])
可用于函数声明。告诉编译器被声明的函数以及函数内部调用的其它函数都不会抛出异常。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明math.h文件中关于 #define _ARMABI __declspec(__nothrow)的问题