查看: 150|回复: 0

C/C++的Intrinsics函数「必须声明但禁止定义」,函数地址 ...

[复制链接]

3

主题

6

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2023-3-3 08:42:42 | 显示全部楼层 |阅读模式
我想造大数运算的轮子,因为x64不给内联汇编,所以我找到了这里Intel® Intrinsics Guide
结果说是#include ,但是include完死活找不到对应的函数
一气之下我直接把函数声明复制过来了——因为我看immintrin.h里面也只有声明没有定义
结果...能用???


cpp这样可以用


纯C这样就可以,看见sbb汇编了
#ifdef __cplusplus
extern "C" {
#endif
        unsigned char  __cdecl
                _subborrow_u32(
                        unsigned char,
                        unsigned int,
                        unsigned int,
                        unsigned int*);
#ifdef __cplusplus
}
#endif

int main()
{
        unsigned i[3]={0};
        char in = 0, out = 0;
        /*unsigned char
        (__cdecl * fn)(
                unsigned char,
                unsigned int,
                unsigned int,
                unsigned int*) = _subborrow_u32;*/
        out = _subborrow_u32(in, i[0], i[1], &i[2]);

}但是我试图去找函数地址编译器就告诉我,没有...
(就是中间注释掉的那一坨)
我试着给个定义,报错
我改一下参数,报错
我删掉声明,报错
...所以这个东西是什么原理啊?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表