エラーを解決する:L2300 (E) Duplicate symbol "(xxx)" in "(xxx).o"

Renesas(ルネサス テクノロジ/ルネサス エレクトロニクス) H8マイコン コンパイルの問題
91:10/24(水) 22:15 FWOIBkGt [sage]
HEWで質問です。
includeしたファイルで
配列で定数を定義したんですけど、
L2300 (E) Duplicate symbol “xxx” in “C:¥WorkSpace¥~
が出ます。
メインでは配列を参照してるだけなのに
こんなことってあるんでしょうか?
——————————————————————————–
92:10/24(水) 22:18 eSo0ndka [sage]
それincludeした「xxx.c」ファイルもプロジェクトのCソースとしてコンパイルされてるからでは。
——————————————————————————–
93:10/24(水) 22:20 ffzXFEVi [sage]
>>91
ヘッダファイル内に配列の定義を書いてしまうと、そのヘッダファイルを#includeする
Cソースごとに定義の実体ができてしまって、リンク時にエラーになる。
ヘッダファイルの中には配列の宣言だけ書いて(externをつけておく)、どれか1ヶ所の
Cソースに定義を入れておけば、定義の実体が1つだけになるので、リンク時のエラーは
出ない。

No related posts.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です