c sscanf和SCNu64编译错误
当我编译这段代码时,我不理解下面的错误消息。我找不出它有什么毛病c sscanf和SCNu64编译错误,c,C,当我编译这段代码时,我不理解下面的错误消息。我找不出它有什么毛病 Description Resource Path Location Type expected ‘)’ before ‘SCNu64’. #include <inttypes.h> int calc_rate(uint64_t *rate, char val[], char mult[]) { int rc = sscanf(val, "%" SCNu64 "%2s", rate, mult);
Description Resource Path Location
Type expected ‘)’ before ‘SCNu64’.
#include <inttypes.h>
int calc_rate(uint64_t *rate, char val[], char mult[]) {
int rc = sscanf(val, "%" SCNu64 "%2s", rate, mult);
}
描述资源路径位置
在“SCNu64”之前键入“)”。
#包括
内部计算率(uint64计算率,字符值[],字符数[]){
int rc=sscanf(val,“%”SCNu64“%2s”,速率,mult);
}
如果同时包含
和
,则显示的代码片段可以干净地编译。(除非范围内有原型,否则您不能合法地调用sscanf()
),这意味着问题出现在您显示内容之前的代码中。或者这意味着您的编译器不支持精确的64位类型,除非您在一个相对模糊的大型机上,或者您不是在C99或C11模式下编译。是否包含
以定义SCNu64
宏?这不应该是uint64\t
,并且从值返回函数的末尾掉下来是未定义的行为。@ShafikYaghmour是的。更正如果您同时包含
和
,则显示的代码片段可以干净地编译。(除非范围内有原型,否则您不能合法地调用sscanf()
),这意味着问题出现在您显示内容之前的代码中。或者这意味着您的编译器不支持64位类型,除非您在一个相对模糊的大型机上,或者您不是在C99或C11模式下编译,否则这是不可能的。@JonathanLeffler,谢谢。解决问题。要我帮你记下答案吗?