【初心者】Ubuntu Linux 126【本スレ】 (473レス)
前次1-
抽出解除 レス栞

69
(1): 04/30(木)14:14:39.44 ID:nVAHzhsH(1) AAS
3行で
75: 04/30(木)16:12:47.44 ID:lFYNk0IA(3/3) AAS
>>66
その時はまた別なものに移行すればいいと思うんだけどね。重要なのはオープン・ソースである事で、マイクロソフトが望まぬ事をしたらなら、そこからフォークさせていけば良い
341: 05/24(日)16:42:06.44 ID:SooJXv0m(8/8) AAS
gcc でプログラムをコンパイルする場合、ソースやヘッダで関数が複数回定義されることがあります。
昔は -z muldefs というオプションをつけると、一応はコンパイルが通りました。これは現在でも有効な手法でしょうか?

結論から申し上げますと、-z muldefs (または --allow-multiple-definition)は、現在でも GCC(正確にはGNUリンカ ld)のオプションとして有効であり、機能します。
しかし、現代のソフトウェア開発においては、これを常用することは「非常に非推奨な、避けるべき禁じ手(最終手段)」とされています。
その理由と、現在推奨されている正しい対処法を解説します。

1. 現在でも有効だが「非推奨」とされる理由
このオプションは、重複した定義のうち「最初に見つかったもの」を優先し、残りを無視して無理やりリンクを通すものです。
これが危険とされるのには、現代のコンパイラ最適化の進化が絡んでいます。

未定義動作(Undefined Behavior)の誘発
C/C++の標準規格(One Definition Rule / 単一定義規則)では、外部結合を持つ関数や変数の重複定義は認められていません。
省8
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.018s