2011-07-25 11 views
2

WindowsマシンからMacにコードを移植しました。#includeヘッダファイルに関するネームスペース質問

namespace ocip { 
    #include "onan/ocip/ocip.h" 
} 

ocip.hが持っているの#include stdint.h
が含まれています。私は、ヘッダファイルには、次のコードを持っているapi.hと呼ばれていXcodeの3.2.5

とOS X 10.6を使用しています次のtypedef:

typedef unsigned int   uint32_t; 

今すぐ戻っapi.hに、私はそれで次のようにクラスを持っている:

OCIP :: m_nModeのuint32_t。

コンパイラは、名前空間 'ocip'のuint32_tは型を指定していないことを伝えます。

私が間違っていることは何ですか?

答えて

0

これが役立つかどうかわかりませんが、 "uint32_t"のタイプが既に宣言されている可能性があります。あなたが "stdint"を含んでいるなら、すでに同じ名前のtypedefがあります。これにより、opic.hで再定義する際に問題が発生する可能性があります。

+0

私は、私の質問でキーワードを省略したことに気付きました。ocip.hにはstdint.hが含まれています。これはocip :: uint32_tが望むものでした。これは、私がstdint.hをインクルードしていて、その中で名前空間を使うことができないことを意味しますか? –

+0

stdint内のすべてがstd名前空間にあります。 "ocip :: std :: uint32_t"を試してみてくださいが、#includeを名前空間宣言の前に移動してから、 "using namespace std"を実行する必要があると思います。 – Chris

+0

uint32_t isn ' std :: uint32_tはocip ::がある場合とない場合は動作しません。 stdint.hを見ると、名前空間もありません。まだocip :: uint32_tのように動作するはずですが、そうではありません –