C++與namespace有關(guān)的兩個編譯錯誤的講解
某次,在大型的工程代碼中,我這樣調(diào)用:
#include <iostream> using namespace std; namespace A { void fun() { printf("aaa\n"); } } namespace B { void fun() { printf("bbb\n"); } } int main() { fun(); return 0; }
編譯出錯:error: ‘fun' was not declared in this scope
,查了一下,原來是名空間在搗鬼。另外,名空間中的函數(shù)為什么不縮進呢?我想了一下,理解了當時寫代碼的人為什么要這樣做。
再看我遇到的另外一次錯誤:
#include <iostream> using namespace std; namespace A { void fun() { printf("aaa\n"); } } namespace B { void fun() { printf("bbb\n"); } } using namespace A; using namespace B; int main() { fun(); return 0; }
結(jié)果:call of overloaded ‘fun()' is ambiguous
,錯誤很顯而易見了。實際中也確實經(jīng)常會犯這種錯誤。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
C語言之素數(shù)(質(zhì)數(shù))的判斷以及輸出
這篇文章主要介紹了C語言之素數(shù)(質(zhì)數(shù))的判斷以及輸出方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03C++數(shù)據(jù)封裝以及定義結(jié)構(gòu)的詳細講解
這篇文章主要詳細講解了C++數(shù)據(jù)封裝以及定義結(jié)構(gòu),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-05-05C++ Boost MetaStateMachine定義狀態(tài)機超詳細講解
Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱2022-12-12