- 1 名前:デフォルトの名無しさん [2014/09/23(火) 00:20:11.40 ID:G97CLCj1.net]
- Windows上で動作するフリーの開発環境 CygwinとMinGWに関する相談スレッドです。
過去スレ: Cygwin + MinGW + GCC 相談室 Part 7 peace.2ch.net/test/read.cgi/tech/1357019230/ Cygwin + MinGW + GCC 相談室 Part 6 toro.2ch.net/test/read.cgi/tech/1304609116/ Cygwin + MinGW + GCC 相談室 Part 5 hibari.2ch.net/test/read.cgi/tech/1269400706/ Cygwin + MinGW + GCC 相談室 Part 4 pc12.2ch.net/test/read.cgi/tech/1221233882/ cygwin + mingwn + gcc 相談室 Part3 pc11.2ch.net/test/read.cgi/tech/1177944767/ cygwin + mingwn + gcc 相談室 Part2 pc11.2ch.net/test/read.cgi/tech/1126103347/ cygwin + mingwn + gcc 相談室 pc8.2ch.net/test/read.cgi/tech/1058134693/ 関連サイト: Cygwin www.cygwin.com/ MinGW www.mingw.org/ 関連スレッド: GCCについて part10 toro.2ch.net/test/read.cgi/tech/1315026784/
- 997 名前:デフォルトの名無しさん mailto:sage [2025/12/03(水) 12:52:21.06 ID:yVL3HxQ8.net]
- 使えるよ
リンカーエラーでも出てる?
- 998 名前:デフォルトの名無しさん mailto:sage [2025/12/03(水) 12:55:52.88 ID:yVL3HxQ8.net]
- あーわかった
>>996 cではなくてc++でコンパイルしな?
- 999 名前:はちみつ餃子 mailto:sage [2025/12/03(水) 14:09:55.16 ID:OnxLfrF+.net]
- >>996
C ではインライン定義は外部定義 (external definition; 要するに普通の実体ある関数) の代替を与えるというルールで、インライン定義自体は外部定義を与えない (作らない)。 呼び出しのほうは実体のある外部定義を呼び出すか代用品であるインライン定義を使うかは未規定。 インライン化用の代用品を使うかもしれないし、実体のある関数を呼び出すかもしれない。 実体のある関数を使う選択をしたときに >>996 の状況では実体のある関数は作られていないから存在しないというリンカエラーになる。 GCC でも最適化オプションを付けてインライン化されてしまったときは (インライン化されたら関数をリンクする必要がないので) エラーにならずにリンクが完了することもある。 以下のように extern 付きの宣言を付けるとインライン関数定義から外部定義の生成を強制できるのでこれで対処することも出来る。 inline void foo(void) {} extern void foo(void); int main(void) { foo(); } C++ だとインライン関数がもう少し普通の関数と扱いが平等に近づいているので分かり易いんだが……
- 1000 名前:デフォルトの名無しさん mailto:sage [2025/12/03(水) 22:07:45.02 ID:Eh+HvnbR.net]
- らしいがこの人も勘違いしてそう
https://zenn.dev/mod_poppo/articles/c-inline-function https://wocota.hatenadiary.org/entry/20090219/1235058524
- 1001 名前:デフォルトの名無しさん mailto:sage [2025/12/04(木) 05:43:42.35 ID:7puO0DHP.net]
- .hの方にinlineで
.cの方にexternってことか 気持ち悪いけど納得
|

|