函数和变量范围在C中

时间:2016-09-29 08:24:52

标签: c function variables scope

为什么我们在另一个.c文件中使用一个.c文件中的函数时不使用extern,但是我们必须对变量情况做extern?它与链接器有关吗?

5 个答案:

答案 0 :(得分:2)

默认情况下,函数是extern限定的(除非您使用static将其更改为内部)。例如,

int func(void) {
}

extern int func2(void) {
}

funcfunc2都是外部的。 extern关键字对于外部函数是可选的。

答案 1 :(得分:1)

实际上,函数名称就像变量名一样,但函数原型默认为extern

来自cpprerefence

  

如果函数声明出现在任何函数之外,则它引入的标识符具有文件范围和外部链接,除非使用静态或早期的静态声明可见。

答案 2 :(得分:0)

您可以创建一个.h文件,声明要在其他.c个文件中使用的函数,并#include另一个.h中的.c文件文件。

答案 3 :(得分:0)

演示程序,

<强> one.c

#include "one.h"

void func1() //defination
{
    //code
}

<强> one.h

void func1(); //declaration

<强>的main.c

#include <stdio.h>
#include "one.h"

int main()
{
    func1();
}

然后在Gcc Linux中编译程序:gcc main.c one.c

答案 4 :(得分:0)

是的,我们假设您有一个.c文件作为process.c,并在process.h中声明它。现在,如果你想使用process.c中的函数来假设tools.c,那么只需#include&#34; process.h&#34;在tools.c中并使用ther函数。 process.h和process.c文件应该在您的项目中。

process.c文件

#include<stdio.h>
#include<conio.h>
#include "process.h"
unsigned int function_addition(unsigned int a, unsigned int b)
{
 unsigned int c = 0;
 c = a + b;
 return c;
}

process.h:

<bla bla bla >
unsigned int function_addition(unsigned int a, unsigned int b);
<bla bla bla >

tools.c文件:

#include<stdio.h>
#include<conio.h>
#include "process.h"
my_tools()
{
 unsigned int X = 1, Y = 9, C = 0;
 C = function_addition(X,Y);
}

所有这些文件都在一个项目中。