解决 error: invalid output constraint ‘=a‘ in asm __asm__ (“fxam; fstsw %%ax;“: “=a“ (stw) : “t“ (x)

在公司的电脑上编译通过,回家后的Keil编译不通过,一直报错
一直报错各种库函数的问题:

C:\MinGW\include\math.h(475): error: invalid output constraint '=a' in asm
  __asm__ ("fxam; fstsw %%ax;": "=a" (stw) : "t" (x));

理论上没错的,源代码库函数中一段条件编译语句,引用的是math.c库函数用与计算,代码如下:

#ifndef __NO_INLINE__
__CRT_INLINE int __cdecl __signbit (double x) {
  unsigned short stw;
  __asm__ ( "fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
  return (stw & 0x0200) != 0;
}

__CRT_INLINE int __cdecl __signbitf (float x) {
  unsigned short stw;
  __asm__ ("fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
  return (stw & 0x0200) != 0;
}

__CRT_INLINE int __cdecl __signbitl (long double x) {
  unsigned short stw;
  __asm__ ("fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
  return (stw & 0x0200) != 0;
}
#endif
#ifndef _MATH_H
#define _MATH_H
#pragma GCC system_header

/* All the headers include this file.
 */
#include <_mingw.h>

这是头文件,清楚看到包括编译器的问题。

考虑编译器的原因,不可能是语法问题。

解决办法:
1.改变编译器的等级类型,报错等级:
改变通过等级
缺点:存在风险
2、直接更换编译器,使用GCC或者安装正版的MDK软件,破解等级增大。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值