web-dev-qa-db-ja.com

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

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

113
Rob

このヘッダーのMSバージョンを次からダウンロードできます。

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

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

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

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

82
Rob

自分で定義するだけです。

#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
45

更新:Visual Studio 201およびVisual C++ 2010 Expressの両方にstdint.hがあります。 C:\Program Files\Microsoft Visual Studio 10.0\VC\includeにあります

44
Ashwin Nanjappa

Visual Studio 2003-2008(Visual C++ 7.1-9)は、C99互換性を主張しません。 (コメントについてはrdentatoに感謝します。)

23
Adam Mitz

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

11

MicrosoftはC99をサポートしておらず、計画も発表していません。私は彼らがC++標準を追跡するつもりであると信じていますが、C++のサブセットを除いてCは事実上時代遅れだと考えています。

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

5
Mike Dimmick

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

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

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

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

本で説明および使用されているとおり:ポータブルコードの記述:複数のプラットフォーム用のソフトウェア開発入門ブライアンフック http://books.google.ca/books?id=4VOKcEAPPO0C

-ジェイソン

4
Jason Harrison