在公司的电脑上编译通过,回家后的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软件,破解等级增大。