C99 stdint.hヘッダーとMS Visual Studio


113

驚いたことに、C99のstdint.hがMS Visual Studio 2003以降にないことがわかりました。彼らには理由があると確信していますが、誰がどこでコピーをダウンロードできるか知っていますか?このヘッダーがないと、uint32_tなどの有用な型の定義がありません。


41
これに対する更新として:MSVC 2010には次のものが含まれていますstdint.h
Michael Burr

このブログで行く:blogs.msdn.com/b/vcblog/archive/2014/11/17/...VS 2015のプレビューは完全にCコンパイラの魔法とが必要でのみ省略されtgmath.h、とC99標準ライブラリを(サポートしていますオーバーロードのあるC ++、およびコンパイラサポートも必要とするCX_LIMITED_RANGE / FP_CONTRACTには関係ありません)。
バルカンレイヴン2014

回答:


82

このヘッダーのMSバージョンを次の場所からダウンロードできることがわかります。

https://github.com/mattn/gntp-send/blob/master/include/msinttypes/stdint.h

ポータブルなものはここにあります:

http://www.azillionmonkeys.com/qed/pstdint.h

Software Ramblingのブログに感謝します。


13
パブリックドメイン(MIT / BSDライセンスではありません。著作権の帰属を維持する必要さえありません)stdint.h for MSVC(MinGWからわずかに変更されたバージョン):snipplr.com/view/18199/stdinth
Michael Burr

第一リンク404エラー
マシューMoisen

元の回答を変更しましたが、github.com / mattn / gntp
send

46

自分で定義してください。

#ifdef _MSC_VER

typedef __int32 int32_t;
typedef unsigned __int32 uint32_t;
typedef __int64 int64_t;
typedef unsigned __int64 uint64_t;

#else
#include <stdint.h>
#endif

4
私は何かを欠落していますか、それともtypedef unsigned __int64 uint64_tであるべきではありませんか??
Roman A. Taycher

1
また、リテラルのuint64_t値を使用することは#define U64(u) (u##ui64)、Windowsや#define U64(u) (u##ULL)その他の場合に役立ちます。
Niklas 2013

45

更新:Visual Studio 2010Visual C ++ 2010 Expressの両方にがありstdint.hます。それはで見つけることができますC:\Program Files\Microsoft Visual Studio 10.0\VC\include


3
<cstdint>と同様に、C ++ユーザーの場合はそれが好きstd::です。
Adrian McCarthy

23

Visual Studio 2003-2008(Visual C ++ 7.1-9)はC99互換であると主張していません。(rdentatoのコメントに感謝します。)


11

ブーストは、あなたが探しているタイプのcstdint.hppヘッダファイルが含まれていますhttp://www.boost.org/doc/libs/1_36_0/boost/cstdint.hpp


1
ブーストはC ++、問題はC99にあります
Remo.D

4
明確ではありません-彼は、使用している言語を指定せずに、Visual StudioのC99ヘッダーについて質問しています。いずれにしても、Microsoftがサポートしていないため、C99にすることはできません。
Nemanja Trifunovic

OPは<stdint.h>Boostヘッダーではなくのコピーを必要としています。
jww

5

マイクロソフトはC99をサポートしておらず、今後の予定も発表していません。私は彼らがC ++標準を追跡するつもりであると信じていますが、C ++のサブセットとして以外は、Cは事実上時代遅れであると考えています。

Visual Studio 2003以降の新しいプロジェクトでは、[C ++コード(/ TP)としてコンパイル]オプションがデフォルトで設定されているため、.cファイルはすべてC ++としてコンパイルされます。


4

別のポータブルソリューション:

POSH:ポータブルオープンソースハーネス

「POSHは、クロスプラットフォームのライブラリやアプリケーションを作成して移植する手間を大幅に軽減するように設計された、シンプルでポータブル、使いやすく、統合しやすく、柔軟なオープンソースの「ハーネス」です。」

http://poshlib.hookatooka.com/poshlib/trac.cgi

本で説明および使用されているとおり:移植可能なコードを書く:複数のプラットフォーム用のソフトウェア開発の概要 Brian Hook著 http://books.google.ca/books?id=4VOKcEAPPO0C

-ジェイソン


1
Poshlib Wikipediaの記事によると、リンク認証は次のとおりです。ユーザー名:ゲスト、パスワード:guest123
JPaget

合計3つのコミット、最後のコミットは2006年9月の日付
AntoineL
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.