C++编译报错:||error: ld returned 1 exit status|

这个问题我遇到过三次了,每次好像原因都不一样,在网上看到很多博客都记录了这个问题,每人原因也都不同,所以可以有多种原因都引发这个错误。但我不懂ld returned 1 exit status|到底是啥意思,所以不能解读这些问题的相通的共同毛病,但我觉得这肯定是什么比较致命的错误,即找不到病根,那就只好从现在开始专门记录一下各种症状

  1. 在头文件中定义变量
    今天脑子一昏,竟做出此举,我很惭愧。我把外部变量的定义竟写到了头文件中, 于是报错。然而外部变量可以放在任何源代码文件中,只要写在所有函数外面就行,就是不能放在头文件中。。。我是个人才

错误代码

//coordin.h
#ifndef COORDIN_H_
#define COORDIN_H_
double warming = 0.3;//外部变量/全局变量的定义声明,应删掉这句代码
void update(double);
void local();
#endif // COORDIN_H_
//main.cpp
#include <iostream>
#include "coordin.h"
extern double warming;//应改为外部变量/全局变量的定义声明:double warming = 0.3;

int main()
{
    std::cout << "global warming is " << warming << '\n';
    update(0.1);//更改全局变量的值
    std::cout << "Now global warming is " << warming << '\n';
    local();//同名局部变量隐藏全局变量
    
    return 0;
}
//file1.cpp
#include <iostream>
#include "coordin.h"
extern double warming;//引用声明

void update(double x)
{
    warming += x;
}

void local()
{
    double warming = 1.2;//隐藏全局变量warming
    std::cout << "local warming is " << warming << '\n';
    std::cout << "But global warming is " << ::warming << '\n';//::是作用域解析运算符,表示使用变量的全局版本
}

输出

global warming is 0.3
Now global warming is 0.4
local warming is 1.2
But global warming is 0.4

头文件只能有下面这些东西,不要企图在里面定义任何变量。。。
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值