如何从另一个C文件中访问变量?

时间:2010-12-02 22:37:11

标签: c file variables

我有两个C文件。我想在一个中声明一个变量,然后能够从另一个C文件中访问它。我对示例字符串的定义可能并不完美,但您明白了。

//file1.c

char *hello="hello";

//file2.c

printf("%s",hello);

6 个答案:

答案 0 :(得分:5)

// file1.h
#ifndef FILE1_H
#define FILE1_H
extern char* hello;

#endif


// file1.c
// as before


// file2.c
#include "file1.h"
// the rest as before

答案 1 :(得分:3)

*hello中的{p> file1.c必须声明全局,而extern中的file2.c必须全球(不是在功能

//file2.c
extern char *hello;

... function()
{
printf(...)
}

答案 2 :(得分:2)

你有什么工作。您想要研究的是C中的“链接”。基本上不在函数内或标记为静态的对象是extern(想想全局)。在这种情况下,您需要做的是通知编译器实际上有一个名为hello的变量在别处定义。您可以通过将以下行添加到file2.c

来完成此操作
extern char* hello;

答案 3 :(得分:2)

file1.c中

int temp1=25;
int main()
{
.
. 
}

file2.c中

 extern int temp1;
 func1();
 func2(temp1);
{p> temp1file1.c中定义。如果要在file2.c中使用它,则必须写 extern int temp1; 您必须在要使用此变量的每个文件中执行此操作

答案 4 :(得分:1)

这是有效的

T.C

#include <stdio.h>

int main(void)
{
    extern int d;

    printf("%d" "\n", d);
    return 0;
}

H.C

int d = 1;

输出

[guest@localhost tests]$ .ansi t.c h.c -o t
[guest@localhost tests]$ ./t
1
[guest@localhost ~]$ alias .ansi
alias .ansi='cc -ansi -pedantic -Wall'
[guest@localhost ~]$

答案 5 :(得分:0)

file_2.c

#include<stdio.h>

int count;
void extern_function();

void main()
{
count = 5;
extern_function();

}

file_3.c

#include<stdio.h>

void extern_function()
{

extern int count;   
printf("the value from the external file is %d",count);

}

现在运行代码

    $gcc file_2.c file_3.c -o test
    $./test

它有效!!