1. ホーム
  2. C++

C++コンパイルエラー:||error: ld returned 1 exit status|.

2022-02-08 13:39:57
<パス

この問題には3回遭遇していますが、毎回原因が違うようです。この問題を記録したウェブ上の多くのブログを見ましたが、それぞれ原因が異なるので、このエラーを引き起こす原因が複数ある可能性があります。しかし、私は ld returned 1 exit status|の意味がわからないので、これらの問題に共通する問題を読み解くことはできませんが、これは何らかの致命的なエラーに違いないと思っています。 という、ある種の致命的なエラーであるに違いないと思います。 問題の根源を見いだせない それなら、これからは具体的に症状を記録していくしかないでしょう

  1. ヘッダーファイルでの変数の定義
    今日、頭の中でこんなことをやってしまい、お恥ずかしい限りです。ヘッダーファイルに外部変数の定義を書いたら、エラーになりました。しかし、外部変数は、すべての関数の外に書いてあれば、どのソースコード・ファイルにも入れることができますが、ヘッダー・ファイルには書けません。私は、才能

エラーコード

//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


ヘッダーファイルは以下の内容のみとし、その中で変数を定義しようとしないでください。