Cygwin + MinGW + GCC 相談室 Part 8 (995レス)
Cygwin + MinGW + GCC 相談室 Part 8 http://mevius.5ch.net/test/read.cgi/tech/1411399211/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
992: はちみつ餃子 ◆8X2XSCHEME [sage] 2025/12/03(水) 14:09:55.16 ID:OnxLfrF+ >>989 C ではインライン定義は外部定義 (external definition; 要するに普通の実体ある関数) の代替を与えるというルールで、インライン定義自体は外部定義を与えない (作らない)。 呼び出しのほうは実体のある外部定義を呼び出すか代用品であるインライン定義を使うかは未規定。 インライン化用の代用品を使うかもしれないし、実体のある関数を呼び出すかもしれない。 実体のある関数を使う選択をしたときに >>989 の状況では実体のある関数は作られていないから存在しないというリンカエラーになる。 GCC でも最適化オプションを付けてインライン化されてしまったときは (インライン化されたら関数をリンクする必要がないので) エラーにならずにリンクが完了することもある。 以下のように extern 付きの宣言を付けるとインライン関数定義から外部定義の生成を強制できるのでこれで対処することも出来る。 inline void foo(void) {} extern void foo(void); int main(void) { foo(); } C++ だとインライン関数がもう少し普通の関数と扱いが平等に近づいているので分かり易いんだが…… http://mevius.5ch.net/test/read.cgi/tech/1411399211/992
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.028s