相关疑难解决方法(0)

如何在不同的.c文件之间共享变量?

关于C声明的初学者问题:

在.c文件中,如何使用另一个.c文件中定义的变量?

c

64
推荐指数
4
解决办法
10万
查看次数

什么时候可以在C中使用全局变量?

显然,那里的意见种类很多,其中包括" 永远!永远封装(即使它仅仅是一个宏!) "至" 这没什么大不了的 - 当它更方便时使用它们. "

所以.

具体,具体原因(最好以一个例子为准)

  • 为什么全局变量是危险的
  • 使用全局变量代替替代方案
  • 那些试图不恰当地使用全局变量的人存在哪些替代方案

虽然这是主观的,但我会选择一个答案(对我而言,这最能代表每个开发人员应该与全局人员建立的爱/恨关系),社区将投票给他们.

我相信新手有这样的参考是很重要的,但如果存在与你的答案基本相似的另一个答案,请不要混淆 - 添加评论或编辑其他人的答案.

-亚当

c global-variables

47
推荐指数
6
解决办法
4万
查看次数

未初始化的变量会发生什么?C++

int main()
{    
    int a;
    cout << a;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想知道为什么要输出值 0。我想如果一个变量未初始化,它会输出一个垃圾值。

但是,我也记得听说整数的默认值是 0,所以我有点困惑。

谢谢

c++ variables initialization

2
推荐指数
1
解决办法
1903
查看次数

在 C++ 中全局初始化类的正确方法

我知道 global 不好,但作为一种实践,这是初始化在多个目标文件之间使用的全局类的正确方法吗?

标题 1.h

class test {
 int id;
 public:
 test(int in){
   id = in;
 }
 int getId(){
  return id;
 }
};

extern test t;
Run Code Online (Sandbox Code Playgroud)

文件 1.cc :

#include <iostream>
#include "1.h"

int main(){
 std::cout << t.getId() << std::endl;
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

文件 2.cc:

#include "1.h"

test t(5);
Run Code Online (Sandbox Code Playgroud)

现在,如果不是extern我在标题中static全局使用该方法static test t(0);呢?

如果我错了,请纠正我,但这会编译得很好,但是我t在两个目标文件和最终二进制文件中都会有 2 个不同的不相关副本?那不好吗?或者链接器是否对其进行排序以消除多个副本?

c++ static initialization one-definition-rule

2
推荐指数
1
解决办法
108
查看次数