cost 255 ms
如何訪問分辨率為 scope 的未命名命名空間?

[英]How to access the unnamed namespace with scope resolution?

我有這個: 本例中的::val將提供val = 400 。 但是,如果我刪除對全局變量的注釋,則::val將到達全局命名空間。 那么,在那種情況下,我該如何訪問未命名的命名空間呢? int val = 400; 這是 output500 100 200 ...

聲明在未命名命名空間中前向聲明的朋友是否違反 ODR?

[英]Is declaring a friend which is forward-declared in an unnamed namespace an ODR-violation?

我一直在使用一個骯臟的技巧,我使用未命名的命名空間來為每個文件指定不同的行為(它用於單元測試)。 感覺它不應該被很好地定義,但它適用於過去六年發布的每個主要編譯器。 我首先在匿名命名空間中前向聲明了一堆類: namespace { class context_check; class contex ...

當標頭和實現分開時,靜態或未命名的命名空間仍然有用嗎?

[英]Are static or unnamed namespace still useful when header and implementation are separated?

正如在這個問題中的回答,我了解到函數的static關鍵字意味着它只能從該文件中的函數中看到。 我認為未命名的命名空間可以用於相同的目的。 但是,通常實現文件和頭文件是分開的。 因此,在我看來,程序員可以通過不在頭文件中寫入此類私有內容的聲明來隱藏實現文件中的所有“私有內容”。 考慮到上述情況, ...

C++ 模塊是否使未命名的命名空間變得多余?

[英]Do C++ modules make unnamed namespaces redundant?

C++20 引入了模塊。 任何未在模塊中導出的符號都具有模塊內部鏈接。 雖然未命名的命名空間提供了一種機制,使未命名命名空間內的定義具有文件內部鏈接。 這是否意味着將來當模塊在 C++ 社區中變得普遍時,未命名的命名空間將變得無用? ...

非內聯命名空間不能作為內聯重新打開

[英]non-inline namespace cannot be reopened as inline

我在理解編譯器的投訴時遇到問題: gcc 說必須在初始定義時指定內聯命名空間 MSVC 說明了標題中的內容。 我的混亂來自我的期望,即兩個后續的匿名命名空間應該被視為一個不相關的新空間的新聲明,但編譯器抱怨它們以某種方式鏈接,就像它試圖用第二個擴展第一個命名空間一樣。 https://godbo ...

為什么我會同時收到函數已使用但未定義和已定義但未使用的警告?

[英]Why do I get warnings both that a function is used but not defined and defined but not used?

我遇到了一對不尋常的編譯器警告,它們似乎相互矛盾。 這是我寫的代碼: 換句話說,我在未命名命名空間中定義了一個 lambda 函數,該函數向前聲明了稍后在該未命名命名空間中定義的函數。 當我用 g++ 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1) 編譯這段代碼時, ...

如何訪問嵌套在命名空間中的未命名空間變量?

[英]How to access Unnamed namespace variable nested inside named namespace?

這個問題已經在命名命名空間內的鏈接未命名命名空間中進行了討論,但是在兩個變量相同的情況下,如何訪問嵌套在命名命名空間下的未命名命名空間的變量沒有給出完美的答案 考慮此代碼 未命名的命名空間"variable a"始終被隱藏。 如何訪問未命名空間的"variable a" ? ...

未命名命名空間中名稱的外部鏈接

[英]External linkage for name inside unnamed namespace

根據C ++標准的第3.5 / 4條: 未命名的命名空間或在未命名的命名空間中直接或間接聲明的命名空間具有內部鏈接。 同樣在第7.3.1.1段中我們注意到96): 雖然未命名的命名空間中的實體可能具有外部鏈接,但它們實際上由其翻譯單元唯一的名稱限定,因此永遠不會從任何 ...

在確保翻譯單元之間的可用性時是否靜態棄用?

[英]Is static deprecated when ensuring availability between translation units?

從以下stackoverflow答案中 ,用戶說: 這意味着變量是翻譯單元的本地變量(簡單地放到單個源文件中),並且不能從外部訪問。 事實上,在當前的C ++標准中不推薦使用靜態 - 而是應該使用匿名命名空間: 應該: 我不同意匿名命名空間是首選方法, 但 ...

如何在匿名命名空間中調用可變參數模板助手?

[英]How to call a variadic template helper in anonymous namespace?

在下面的代碼中, foo應該是任何人都可以訪問的函數,但是foo_helper則不能,這就是為什么我將其放在匿名命名空間中的原因。 顯然,在此示例中,我省略了包括后衛和包含在內的人員,但他們在那里。 foo.h : foo.cpp : 問題在於,為了使foo_helper ...

為什么要將類型放在未命名的命名空間中?

[英]Why should types be put in unnamed namespaces?

我理解使用未命名的命名空間來使函數和變量具有內部鏈接。 頭文件中不使用未命名的命名空間; 只有源文件。 源文件中聲明的類型不能在外部使用。 那么在未命名的命名空間中放置類型有什么用呢? 請參閱這些鏈接,其中提到的類型可以放在未命名的命名空間中: 未命名的命名空間優於靜態? ...

C ++類設計:未命名的命名空間或私有類方法中的類或函數?

[英]C++ class design: class or functions in unnamed namespace or private class method?

我正在擴展現有的一類新功能,我懷疑使用哪種設計解決方案。 有幾個,每個都有利弊。 我的情況是這樣的:我有一個特殊格式的文件頭,我將閱讀並保存它。 有一個名為FileHeader的類,它已經實現了從/到流的一些序列化和一些其他功能。 我的任務列表中的一項是添加特定時間戳功能。 自1994 ...

在同一聲明性區域中定義的兩個未命名的名稱空間

[英]Two unnamed namespaces, defined in the same declarative region

考慮以下代碼: 該代碼無效。 這是因為發生了a重新定義。 但是我希望這是有效的。 實際上,秒。 3.3.6 / 1說: [...]由原始名稱空間名稱表示的潛在范圍是由與該原始名稱空間名稱相同的聲明區域中的每個命名空間定義所建立的聲明區域的串聯。 但是未命名的名稱 ...

如何在標頭中使用未命名的命名空間會導致ODR違規?

[英]How would use of unnamed namespaces in headers cause ODR-violations?

在Google C ++樣式指南中, 命名空間部分指出“ 在頭文件中使用未命名的命名空間很容易導致違反C ++ One Definition Rule(ODR)。 ” 我理解為什么不在實現文件中使用未命名的命名空間可能會導致ODR違規,但不能在標頭中使用它們。 這怎么會導致違規? ...

將訪問權限限制在命名空間中定義的全局變量上

[英]Restricting access loudly to a global variable defined in a namespace

我有一個與命名空間有關的小問題,考慮到頭文件中的以下內容: 我不希望用戶能夠通過A::B::_member = some_value更改_member的值。 在閱讀未命名的命名空間后,我將其更改為: 這會強制用戶使用提供的mutator函數,除了一個問題外,效果很好: 如 ...

C ++命名空間解析

[英]C++ namespace resolution

當我嘗試構建此代碼時: 我收到錯誤 : 顯然, put<int>使用put來引用bar::put 。 如何讓它引用匿名命名空間中的put<T> ? ...


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