我有两个C文件。我想在一个中声明一个变量,然后能够从另一个C文件中访问它。我对示例字符串的定义可能并不完美,但您明白了。
//file1.c
char *hello="hello";
//file2.c
printf("%s",hello);
答案 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> temp1
在file1.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)
#include<stdio.h>
int count;
void extern_function();
void main()
{
count = 5;
extern_function();
}
#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
它有效!!