相关疑难解决方法(0)

什么是C++中的"翻译单元"

我正在阅读Meyers编写的"Effective C++",并且遇到了"翻译单元"一词.

有人可以给我一个解释:

1)究竟是什么

2)在使用C++编程时,我应该何时考虑使用它

3)如果它只与C++有关,或者它可以与其他编程语言一起使用

我可能已经在不知道术语的情况下使用它了....

c++

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

C中的void和static void函数有什么区别?

我有两个C文件.

在file1.c

int main()
{
  func(); 
  return 0;  
}
Run Code Online (Sandbox Code Playgroud)

file2.c中

static void func(void)
{
  puts("func called");
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我用命令编译上面的代码cc file2.c file1.c,我得到了以下内容,

undefined reference to `func'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

但是,如果我删除file2.c中的static关键字并使用命令编译上面的代码,它就会成功运行.cc file2.c file1.c

所以,我有一个问题,C中的void和static void函数什么区别?

c static

13
推荐指数
1
解决办法
3万
查看次数

从一个文件访问静态变量到另一个文件

我最近遇到的问题是如何访问一个在file1.c中声明为static的变量到另一个file2.c?

是否可以访问静态变量?

我对C中静态关键字的理解是,

static是"内部链接",因此只能从一个编译单元访问它们 - 它们被定义的单元.使用内部链接声明的对象是单个模块的私有对象.

正如我的一位朋友建议我解决方案.

file1.c

   #include <stdio.h>

   int main()
   {
          int b=foo();
          printf("%d",b);
          return 0;
   }
Run Code Online (Sandbox Code Playgroud)

file2.c

   static int a=25;

   int foo()
   {
        return a;
   }
Run Code Online (Sandbox Code Playgroud)

汇编 gcc file1.c file2.c -o file

如果我在上面,我可以访问变量.

所以我的问题是:

  1. 上述程序是否违反静态变量规则?

  2. 如果没有,为什么会这样,除了包括file(#include <…>)之外,还有其他方法可以访问静态变量.

    我怎么能从另一个文件访问静态变量?

    在C中,如何将全局变量的范围限制为声明它的文件?

  3. 如果我对静态变量概念有误,并且有更好的解决方案可用于访问静态变量,请纠正我?

c static static-variables internal-link

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

标签 统计

c ×2

static ×2

c++ ×1

internal-link ×1

static-variables ×1