2017-12-07 8 views
-1

私は次のコードに質問があります。 CPPファイルでChrome V8エンジンソースでは、どういう意味ですか?

#define V8_DECLARE_ONCE(NAME) ::v8::base::OnceType NAME 

は、 '::' の名前空間を参照するための手段が、どこ ':: V8' を含めますか?

std::cout << ... << std::endl; 

coutは 'std'名前空間の下にありますが、この場合、どのように解釈するのか分かりません。

このコードの一部は次のとおりです。

namespace v8 { 
namespace base { 

typedef AtomicWord OnceType; 

#define V8_ONCE_INIT 0 

#define V8_DECLARE_ONCE(NAME) ::v8::base::OnceType NAME 
+1

「:: v8」とは、トップレベルの名前空間から「v8」を取得することを意味します。 –

答えて

1

::nsnsのルート名前空間に見えることを意味します。可能な名前空間の衝突を避けるため、現在の名前空間を調べることは避けます。独自の名前空間を定義し、同じ名前を使用する場合はそうです。違いを示す例を次に示します。

#include <iostream> 

namespace v8 { 

constexpr int val = 5; 

} // namespace v8 

namespace my { 
namespace v8 { 

constexpr int val = 10; 

} // namespace my::v8 

void some_func() 
{ 
    std::cout << ::v8::val << ", " << v8::val << '\n'; 
} 

} // namespace my 

int main() 
{ 
    my::some_func(); 
} 

プリント5, 10です。

+0

大!!わかった !どうも :) –

関連する問題