「uint32_t」識別子が見つかりませんエラー


94

Linux CからVisual C ++ for Windowsにコードを移植しています。

Visual C ++にはわからない#include <stdint.h>のでコメントにしました。

後で、それらの'uint32_t': identifier not foundエラーの多くを見つけました。どうすれば解決できますか?


どのインクルードをコメント化していますか?
ダニエルA.ホワイト

3
また、使用しているVisual C ++のバージョンはどれですか。uint32_tそして他の正確な幅の整数型は、C99やC ++ 0xのの一部でしかありませんので、古いコンパイラ(のVisual C ++ 2008のような以前)にそれらを持っていません。
James McNellis、2011年

かなりたくさん!!! #include <stdint.h> #include <syslog.h> #include <linux / stddef.h> #include <pthread.h> #include <unistd.h>ありがとう!!!
ケビン

Visual C ++ Express 2008を使用しています。
ケビン

4
@kevin:プラットフォーム固有のヘッダーを削除して、それらを忘れることはできません。新しいプラットフォームの代替案を見つける必要があります。これには、コードを移植可能にするために、コードを書き換える必要がある場合がよくあります。
軌道上での軽さのレース

回答:


114

このタイプは<stdint.h>、C ++ 11標準の一部であるCヘッダーで定義されていますが、C ++ 03の標準ではありません。ヘッダーのWikipediaページによると VS2010までVisual Studioに同梱されていません。

それまでの間、Microsoftのカスタム整数型をCが期待するtypedefマップするを追加することにより、ヘッダーの独自のバージョンを偽造することができます。次に例を示します。

typedef __int32 int32_t;
typedef unsigned __int32 uint32_t;
/* ... etc. ... */

お役に立てれば!


4
Boostのcstdint実装を使用することもできます。
Peter Huene、2011年

コードをコピーしてページに貼り付けます。しかし、それはこのエラーを示します "構文エラー: ';がありません' 識別子「int32_t」の前と「型指定子がない-intと見なされます。注:C ++はdefault-intをサポートしていません」
ケビン

申し訳ありませんが、ピーター、私はCが初めてです。Boostのcstdint実装とは何ですか?
ケビン

3
Microsoftの固定サイズの整数型は、「t」で終わっていません。ちょうど試してください__int32
Ben Voigt、2011年

1
u_int32_tそして、uint32_t同じタイプではありません。1つはu。の後に余分なアンダースコアがあります。それは別の問題のようです。
templatetypedef

78

でき#include <cstdint>ます。2011年以降、C ++標準の一部となっています。


1
これは、C ++やVS2010などの質問の制約を考えると、おそらく受け入れられる答えになるはずです。独自のtypedefをロールする必要はありません。
jww 2018年

7

私は同じエラーを抱えており、それを次のファイルに含めて修正しました

#include <stdint.h>

ファイルの先頭。


質問で指摘されているように、stdint.hはOPが使用しているC ++コンパイラの一部ではありません。この回答は質問には対応していません。
IInspectable 2016年




0

VS2010でプロジェクトを実行する必要があり、コードに変更を加えることができませんでした。私の解決策は、vS2013をインストールし、VS2010ポイントでVC ++ディレクトリ-> IncludeDirectoriesをProgram Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ includeにインストールすることでした。その後、私のプロジェクトは問題なくコンパイルされました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.