Visual Studio 和 GCC - 编译器差异
Visual Studio and GCC - Compiler differences
在 VS 中编译时我没有收到任何错误,但使用 gcc 我得到以下信息:
warning: format ‘%Lf’ expects argument of type ‘long double *’, but argument 2 has type ‘double *’ [-Wformat=]
scanf("%Lf",&checkprice);
^
/tmp/cch8NUeU.o: In function `main':
test.c:(.text+0x8e1): undefined reference to `stricmp'
collect2: error: ld returned 1 exit status
我想这很正常。我如何在 gcc 中修复它?
stricmp()
不是标准函数,尽管有一个 POSIX 等效函数 strcasecmp()
所以为了让您的代码与两个编译器无缝编译,您可以添加类似这样的东西
#ifdef __GNUC__
#define _stricmp strcasecmp
#endif
并使用 _stricmp()
since stricmp()
was deprecated.
同时修复 scanf()
格式说明符,或将目标变量类型更改为 long double
。
在 VS 中编译时我没有收到任何错误,但使用 gcc 我得到以下信息:
warning: format ‘%Lf’ expects argument of type ‘long double *’, but argument 2 has type ‘double *’ [-Wformat=]
scanf("%Lf",&checkprice);
^
/tmp/cch8NUeU.o: In function `main':
test.c:(.text+0x8e1): undefined reference to `stricmp'
collect2: error: ld returned 1 exit status
我想这很正常。我如何在 gcc 中修复它?
stricmp()
不是标准函数,尽管有一个 POSIX 等效函数 strcasecmp()
所以为了让您的代码与两个编译器无缝编译,您可以添加类似这样的东西
#ifdef __GNUC__
#define _stricmp strcasecmp
#endif
并使用 _stricmp()
since stricmp()
was deprecated.
同时修复 scanf()
格式说明符,或将目标变量类型更改为 long double
。