簡體   English   中英

靜態類或命名空間內的 C++ 內聯函數

[英]C++ inline function inside a static class or namespace

我有一個非常小的函數,它可能是一個宏,但無論如何,我認為內聯函數會做同樣的事情。

但是不,當我將命名空間中的函數標記為inline時,包含我的模塊的任何其他文件都看不到它。

我用靜態類和命名空間都試過了。 聲明或實現函數時沒有錯誤,每個引用都有錯誤,就像函數是靜態的一樣。

有沒有辦法為其他文件提供內聯函數,這些文件包括聲明我的函數的文件?

假設我有一個處理一些硬件的模塊,其中一個功能是這樣的:

bool getState(HWFlag flag)
{
    return (State & flag) > 0
}

我知道,它可以寫成宏,但從邏輯上講,該函數是更大模塊的一部分。 我當然會在 C 中使用宏,但它是 C++,所以我認為可能有更好的方法。 但是好吧,我顯然不明白它是如何工作的。

順便說一句,編譯器不應該只是內聯它,所以我什至不關心嗎?

BTW2:使主要與C代碼對話的模塊成為一個只有靜態方法的類是一個壞主意還是有任何用處? 這就是我最初制作它的方式,但后來決定將其設為命名空間以稍微簡化語法。 但無論如何,如果我使用inline關鍵字,函數就會變成私有的。

inline函數應該在每個使用它的翻譯單元中定義相同。 所以你應該像定義一個宏一樣定義你的內聯函數——在一個被所有需要它的文件包含的頭文件中。

暫無
暫無

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

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