2

このコードをコンパイルすると、以下のエラー メッセージがわかりません。何が悪いのかわかりませんでした。

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);  
}
4

1 に答える 1

3

<inttypes.h>との両方が<stdio.h>含まれている場合、示されているコード フラグメントは問題なくコンパイルされます。(スコープ内にプロトタイプがない限り、合法的に呼び出すことはできませんsscanf()。) つまり、表示しているコードよりも前のコードに問題があるということです。または、コンパイラが正確に 64 ビット型をサポートしていないことを意味します。これは、比較的あいまいなメインフレームを使用しているか、C99 または C11 モードでコンパイルしていない場合を除き、ほとんどありません。

于 2013-11-05T03:56:28.483 に答える