格式说明符 %Lf 为 `long double` 变量给出错误
Format specifier %Lf is giving errors for `long double` variables
我收到以下错误:
In function 'main':
[Warning] unknown conversion type character 'L' in format [-Wformat=]
[Warning] too many arguments for format [-Wformat-extra-args]
In function 'error_user':
[Warning] unknown conversion type character 'L' in format [-Wformat=]
[Warning] too many arguments for format [-Wformat-extra-args]
在下面的代码中:
#include <stdio.h>
#include <stdlib.h>
void error_user (long double *error);
int main(void)
{
long double error;
printf("What error do you want?\n");
error_user (&error);
printf("%Lf\n", error);
return 0;
}
void error_user (long double *error)
{
scanf("%Lf", error);
}
据我所知 long double
的格式说明符是 %Lf
所以不太确定如何解决这个问题。谢谢!
在 DEV-C++.
中使用 TDM-GCC 4.9.2 64-bit Release
编译
您的编译器无法识别 %Lf
,您需要提供编译器标志 -D__USE_MINGW_ANSI_STDIO=1
示例:
$ gcc filename.c -Wall -Wextra -pedantic -O3 -D__USE_MINGW_ANSI_STDIO=1
^^^^^^^^^^^^^^^^^^^^^^^^^^
当您使用 Dev-C++
时,您可能还应该添加 -std=c11
标志以启用 C11 标准。
此线程解释了您应该如何向 Dev-C++
添加标志:
How to change mode from c++98 mode in Dev-C++ to a mode that supports C++0x (range based for)?
因此您需要使用链接线程中的说明添加标志 -std=c11
和 -D__USE_MINGW_ANSI_STDIO=1
。
由于 Dev-C++ 使用较旧的标准,因此可能仅添加 -std=c11
即可解决问题。先试试。
我收到以下错误:
In function 'main':
[Warning] unknown conversion type character 'L' in format [-Wformat=]
[Warning] too many arguments for format [-Wformat-extra-args]
In function 'error_user':
[Warning] unknown conversion type character 'L' in format [-Wformat=]
[Warning] too many arguments for format [-Wformat-extra-args]
在下面的代码中:
#include <stdio.h>
#include <stdlib.h>
void error_user (long double *error);
int main(void)
{
long double error;
printf("What error do you want?\n");
error_user (&error);
printf("%Lf\n", error);
return 0;
}
void error_user (long double *error)
{
scanf("%Lf", error);
}
据我所知 long double
的格式说明符是 %Lf
所以不太确定如何解决这个问题。谢谢!
在 DEV-C++.
中使用TDM-GCC 4.9.2 64-bit Release
编译
您的编译器无法识别 %Lf
,您需要提供编译器标志 -D__USE_MINGW_ANSI_STDIO=1
示例:
$ gcc filename.c -Wall -Wextra -pedantic -O3 -D__USE_MINGW_ANSI_STDIO=1
^^^^^^^^^^^^^^^^^^^^^^^^^^
当您使用 Dev-C++
时,您可能还应该添加 -std=c11
标志以启用 C11 标准。
此线程解释了您应该如何向 Dev-C++
添加标志:
How to change mode from c++98 mode in Dev-C++ to a mode that supports C++0x (range based for)?
因此您需要使用链接线程中的说明添加标志 -std=c11
和 -D__USE_MINGW_ANSI_STDIO=1
。
由于 Dev-C++ 使用较旧的标准,因此可能仅添加 -std=c11
即可解决问题。先试试。