16

ここに私が設計したものからの小さなコードスニペットがありますが、エラーが発生し続けます:

sprintf not declared in scope 

#includes に何かを含めますか、またはこれを機能させるにはどうすればよいですか? 私は母の家で VS で作業していましたが、家に帰ってコード ブロックで取得できません。

if (tmp2 <= B_dest[hr - 6])
{
    sprintf(name, "B%d", tmp3);
}else{
    sprintf(name, "A%d", tmp3);
}
4

3 に答える 3

29

を含める必要がありますstdio.h

#include<stdio.h>

stdio.h関数を宣言しますsprintf。ヘッダーがないと、コンパイラは意味を理解する方法がないsprintfため、エラーが発生します。

C ++では、次のことに注意してください。

含めるとcstdio、シンボル名がstd名前空間にインポートされ、場合によってはグローバル名前空間にインポートされます。
含めるstdio.hと、シンボル名がグローバル名前空間にインポートされ、場合によっては名前空間にインポートされstdます。

同じことがすべてのcスタイルのヘッダーにも当てはまります。

于 2012-11-26T03:10:09.250 に答える
6

あなたがしたことを確認してください#include <cstdio>

std::sprintf()@Potatoswatterが指すようにsprintfにアクセスします。


または、古いc-styleを実行します。sprintf#include <stdio.h>の定義を含めます。

于 2012-11-26T03:10:01.827 に答える
0

私は C::B で同様の問題を抱えていましたが、問題は単なるコンパイラ パス以上のものであることがわかりました - IDE 自体が #include <...> ファイルを開く際に問題があったようです - ただし、これは設定 -> エディタで解決できます-> その他の設定 -> ファイルを開くときにエンコードを使用: デフォルト

私のエンコーディングはデフォルトではありませんでした。これにより、IDE がインクルード <...> を開く際に問題が発生しました

ただし、「このスコープで宣言されていませんでした」という問題は解決しませんでした

于 2014-03-05T10:07:30.580 に答える