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