[英]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.