Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c sscanf和SCNu64编译错误_C - Fatal编程技术网

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,谢谢。解决问题。要我帮你记下答案吗?