Как мне получить доступ к переменной в одном файле C из другого? - PullRequest
3 голосов
/ 03 декабря 2010

У меня есть два файла C.Я хочу объявить переменную в одной, а затем иметь возможность доступа к ней из другого файла C.Мое определение пример строки может быть не идеальным, но вы поняли.

//file1.c

char *hello="hello";

//file2.c

printf("%s",hello);

Ответы [ 6 ]

5 голосов
/ 03 декабря 2010
// 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
3 голосов
/ 03 декабря 2010

*hello в file1.c должно быть объявлено глобальным и extern в file2.c должно быть глобальным тоже (не внутри функция )

//file2.c
extern char *hello;

... function()
{
printf(...)
}
2 голосов
/ 12 марта 2014

file1.c

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

file2.c

 extern int temp1;
 func1();
 func2(temp1);

temp1 определяется в file1.c. Когда вы хотите использовать его в file2.c, вы должны написатьextern int temp1;Вы должны сделать это в каждом файле, который вы хотите использовать эту переменную

2 голосов
/ 03 декабря 2010

То, что у вас будет работать.То, что вы хотите исследовать, это «связь» в C. В основном объекты, не входящие в функцию или помеченные как статические, являются внешними (представьте себе глобально).В этом случае вам необходимо уведомить компилятор о том, что на самом деле в другом месте определена переменная с именем hello.Вы делаете это, добавляя следующую строку в file2.c

extern char* hello;
1 голос
/ 03 декабря 2010

это работает

тс

#include <stdio.h>

int main(void)
{
    extern int d;

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

хс

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 ~]$
0 голосов
/ 08 февраля 2017

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

Работает !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...