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++入門教程(12):定義函式C++函式
- 第 8 節:函式-函式定義和引數函式
- constexpr和常量表示式
- C++定義函式指標,回撥C#C++函式指標C#
- Shell中函式的定義和使用函式
- 【知識點】inline函式、回撥函式、普通函式inline函式
- 函式基本定義和使用‘未完待續函式
- 關於變數的宣告和定義、內部函式和外部函式變數函式
- 02_函式定義及使用函式函式
- 如何在函式內部定義函式?函式
- python---函式定義Python函式
- python如何定義函式Python函式
- python函式的定義和呼叫是什麼?Python函式
- 兄弟連go教程(11)函式 - 函式定義Go函式
- 什麼是Python函式?如何定義函式?Python函式
- qt之函式重定義QT函式
- ts函式約束定義函式
- 在jQuery定義自己函式jQuery函式
- 函式引數 引數定義函式型別函式型別
- java自定義equals函式和hashCode函式Java函式
- c/c++ 拷貝控制 建構函式的問題C++函式
- c++ CopyFile函式響應時間過長問題。C++函式
- 在定義C++, C通用介面函式時讓C++介面支援預設引數C++函式
- makefile--函式定義與呼叫函式
- Python如何定義一個函式Python函式
- 建議欄位別名定義定義那裡順便可定義預設值,這預設值還可以是函式函式
- 內聯(inline)函式與虛擬函式(virtual)的討論inline函式
- Python巢狀定義函式增強reduce()函式功能Python巢狀函式
- sigmod啟用函式和梯度消失問題函式梯度
- 既然編譯器可以判斷一個函式是否適合 inline,那還有必要自己加 inline 關鍵字嗎?編譯函式inline
- [C++] 成員函式指標和函式指標C++函式指標
- 方法(函式)的定義與引數函式
- Python騷操作:動態定義函式Python函式
- TS定義陣列 ts宣告函式陣列函式
- 使用useState多次渲染問題
- C++ 函式過載和模板C++函式
- C++ 常物件和常函式C++物件函式
- 如何在 Linux Shell 程式設計中定義和使用函式Linux程式設計函式