为什么我们在另一个.c文件中使用一个.c文件中的函数时不使用extern,但是我们必须对变量情况做extern?它与链接器有关吗?
答案 0 :(得分:2)
默认情况下,函数是extern限定的(除非您使用static
将其更改为内部)。例如,
int func(void) {
}
extern int func2(void) {
}
func
和func2
都是外部的。 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);
}
所有这些文件都在一个项目中。