驚いたことに、MS VisualStudio2003以降にC99stdint.hがないことに気づきました。彼らには理由があると思いますが、どこでコピーをダウンロードできるか誰か知っていますか?このヘッダーがないと、uint32_tなどの便利なタイプの定義がありません。
7 に答える
このヘッダーのMSバージョンは次の場所からダウンロードできます。
https://github.com/mattn/gntp-send/blob/master/include/msinttypes/stdint.h
ポータブルなものはここにあります:
http://www.azillionmonkeys.com/qed/pstdint.h
SoftwareRamblingのブログに感謝します。
注意:Michael Burrがコメントで言及しているパブリックドメインバージョンのヘッダーは、アーカイブされたコピーとしてここにあります。更新されたバージョンは、libusb_aahのAndroidソースツリーにあります。
自分で定義してください。
#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
更新: Visual Studio 2010とVisual C++ 2010 Expressの両方にstdint.h
. それはで見つけることができますC:\Program Files\Microsoft Visual Studio 10.0\VC\include
Visual Studio 2003-2008(Visual C ++ 7.1-9)は、C99互換であるとは主張していません。(彼のコメントをくれたrdentatoに感謝します。)
Boost には、探しているタイプの cstdint.hpp ヘッダー ファイルが含まれています: http://www.boost.org/doc/libs/1_36_0/boost/cstdint.hpp
Microsoft は C99 をサポートしておらず、その計画も発表していません。彼らは C++ 標準を追跡するつもりだと思いますが、C++ のサブセットを除いて、C は実質的に時代遅れであると考えています。
Visual Studio 2003 以降の新しいプロジェクトには、既定で [Compile as C++ Code (/TP)] オプションが設定されているため、.c ファイルはすべて C++ としてコンパイルされます。
別のポータブル ソリューション:
POSH: ポータブルなオープンソース ハーネス
「POSH は、クロスプラットフォームのライブラリやアプリケーションを作成して移植する手間を大幅に軽減するように設計された、シンプルで移植性があり、使いやすく、統合しやすく、柔軟なオープン ソースの「ハーネス」です。」
http://poshlib.hookatooka.com/poshlib/trac.cgi
本で説明され、使用されているように: 移植可能なコードを書く: 複数のプラットフォーム向けのソフトウェア開発入門
-ジェイソン