簡體   English   中英

當同一個命名空間中有兩個具有相同簽名的函數時會發生什么?

[英]What happens when there are two functions with the same signature in the same namespace?

據我所知,我可以使用命名空間來避免函數相互覆蓋。 但是如果命名空間具有相同的名稱呢?

我包括了下面的兩個 .h 文件,稱為 VideoLibrary::check() 並編譯。 為什么? 這不是與命名空間的目的相矛盾嗎?

file1.h 和 file2.h:

namespace VideoLibrary
{
  void check();
}

文件1.cpp:

namespace VideoLibrary
{
  void check()
    {
        printf("check1");
    }
}

文件2.cpp:

namespace VideoLibrary
{
  void check()
    {
        printf("check2");
    }
}

我擔心主要是因為我的項目包含外部庫,我擔心它包含與我的項目具有相同簽名的函數。 我怎樣才能在編譯時得到這種情況的任何錯誤? 如果重要的話,我將 Xcode 用作編輯器。

如果您在不同的翻譯單元中有 2 個(非內聯)相同函數的定義,則您有 ODR(一個定義規則)違反 NDR(無診斷要求)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM