C++ inline和constexpr函式可以多次定義問題
首先我們明確,一個普通的函式或者變數可以被多次宣告,但只能被定義一次,因此在標頭檔案中一般都只放函式和變數的宣告
行內函數和constexpr函式可以在程式中多次定義,但是多個定義必須完全一致,因此行內函數和constexpr函式通常定義在標頭檔案中。
------C++ primer 第五版 215頁
另外轉
a.h
裡定義
inline int fun()
{
return 1;
}
在 b.h
裡定義
inline int fun()
{
return 100;
}
因為inline函式編譯時需要直接插入函式程式碼,所以不能使extern的,每個編譯模組(cpp原始檔)中必須包含其定義程式碼(不是宣告)
所以"行內函數有可能在程式中定義不止一次,"就是指在每個呼叫inline函式的原始檔中都要有inline的定義,所以把inline定義放在標頭檔案中,需要時include就可以了。
相關文章
- C/C++ inline 函式C++inline函式
- C++入門教程(12):定義函式C++函式
- 第 8 節:函式-函式定義和引數函式
- constexpr和常量表示式
- 關於C++類方法函式指標的定義和使用方法C++函式指標
- 【C++】函式返回函式指標的多種定義方式C++函式指標
- C++定義函式指標,回撥C#C++函式指標C#
- C/C++—— C++中定義虛解構函式的原因C++函式
- Shell中函式的定義和使用函式
- shell 函式定義函式
- 函式基本定義和使用‘未完待續函式
- 關於變數的宣告和定義、內部函式和外部函式變數函式
- 定義函式物件 (轉)函式物件
- 02_函式定義及使用函式函式
- 如何在函式內部定義函式?函式
- 【C++】函式返回資料指標的多種定義方式C++函式指標
- 教你看懂C++類庫函式定義之一---HRESULT 巨集C++函式
- C++型別轉換時定義非成員函式(轉)C++型別函式
- 關於inline函式inline函式
- 兄弟連go教程(11)函式 - 函式定義Go函式
- 【知識點】inline函式、回撥函式、普通函式inline函式
- 在jQuery定義自己函式jQuery函式
- python如何定義函式Python函式
- python---函式定義Python函式
- mysql函式定義語法MySql函式
- qt之函式重定義QT函式
- ts函式約束定義函式
- C++的函式和模板函式 (轉)C++函式
- C++函式中那些不可以被宣告為虛擬函式的函式C++函式
- 什麼是Python函式?如何定義函式?Python函式
- 函式引數 引數定義函式型別函式型別
- python函式的定義和呼叫是什麼?Python函式
- 建議欄位別名定義定義那裡順便可定義預設值,這預設值還可以是函式函式
- 【問題】 table 和column 查詢表定義
- 函式定義、函式的引數、函式的預設引數函式
- C/C++—— C++中函式重寫和函式過載C++函式
- makefile--函式定義與呼叫函式
- sql server檢視函式定義SQLServer函式