C++コンパイルエラー:||error: ld returned 1 exit status|.
2022-02-08 13:39:57
この問題には3回遭遇していますが、毎回原因が違うようです。この問題を記録したウェブ上の多くのブログを見ましたが、それぞれ原因が異なるので、このエラーを引き起こす原因が複数ある可能性があります。しかし、私は ld returned 1 exit status|の意味がわからないので、これらの問題に共通する問題を読み解くことはできませんが、これは何らかの致命的なエラーに違いないと思っています。 という、ある種の致命的なエラーであるに違いないと思います。 問題の根源を見いだせない それなら、これからは具体的に症状を記録していくしかないでしょう
-
ヘッダーファイルでの変数の定義
今日、頭の中でこんなことをやってしまい、お恥ずかしい限りです。ヘッダーファイルに外部変数の定義を書いたら、エラーになりました。しかし、外部変数は、すべての関数の外に書いてあれば、どのソースコード・ファイルにも入れることができますが、ヘッダー・ファイルには書けません。私は、才能
エラーコード
//coordin.h
#ifndef COORDIN_H_
#define COORDIN_H_
double warming = 0.3;//external variable/global variable definition declaration, this code should be deleted
void update(double);
void local();
#endif // COORDIN_H_
//main.cpp
#include
#include "coordin.h"
extern double warming;// should be changed to external variable/global variable definition statement: double warming = 0.3;
int main()
{
std::cout << "global warming is " << warming << '\n';
update(0.1);//change the value of the global variable
std::cout << "Now global warming is " << warming << '\n';
local();// local variable of the same name hides global variable
return 0;
}
//file1.cpp
#include
#include "coordin.h"
extern double warming;//reference declaration
void update(double x)
{
warming += x;
}
void local()
{
double warming = 1.2;//hide global variable warming
std::cout << "local warming is " << warming << '\n';
std::cout << "But global warming is " << ::warming << '\n';//:: is the scope resolution operator, indicating that the global version of the variable is used
}
global warming is 0.3
Now global warming is 0.4
Local warming is 1.2
But global warming is 0.4
//file1.cpp
#include
#include "coordin.h"
extern double warming;//reference declaration
void update(double x)
{
warming += x;
}
void local()
{
double warming = 1.2;//hide global variable warming
std::cout << "local warming is " << warming << '\n';
std::cout << "But global warming is " << ::warming << '\n';//:: is the scope resolution operator, indicating that the global version of the variable is used
}
出力
global warming is 0.3
Now global warming is 0.4
Local warming is 1.2
But global warming is 0.4
ヘッダーファイルは以下の内容のみとし、その中で変数を定義しようとしないでください。
関連
-
Linux の 'pthread_create' への未定義参照問題を解決しました。
-
C++ std::string は NULL で初期化できない、基本的な使い方
-
エラー: 'xxx' は事前宣言と C++ ヘッダーファイルが互いに含まれているため、型名になりません。
-
c++ std::move Principle の実装と使用法のまとめ
-
c++ experience summary(1):linux c compile with warning: assign makes pointer from integer without cast reason.
-
[C++】C++オーバーロード opeartor=非静的メンバ関数でなければならない?
-
C++によるhttpサーバー/webサーバーの作成
-
文字列がこのスコープで宣言されていない 問題の解決
-
C++ shared_ptr コンパイルエラー 'shared_ptr' がこのスコープで宣言されていない問題を修正しました。
-
エラー: "" から非スカラー型 "" への変換
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
C++11での移動セマンティクス(std::move)と完全な前進(std::forward)。
-
std::logic_error' のインスタンスを投げた後に呼び出された実行エラー終了 what(): basic_string::_S_const
-
C++-サンプリング関数 GridSampling (要サンプリング高速化)
-
C++ max() 関数エラー: 'max' の呼び出しに一致する関数がない
-
error: '&' トークンの前にイニシャライザーがあるはずです。
-
const char*' から 'char*' への変換が無効です。
-
const char*' から `char*' への変換が無効な場合の対処法
-
C++: エラー C2280: 削除された関数を参照しようとしています。
-
警告: この関数では 'p' が初期化されていない状態で使用されることがあります。
-
stoi' の解決策は、Dev-c++ のこのスコープで宣言されていません。