스택큐힙리스트

HTML의 p 태그를 한국어로 번역하겠습니다.C에서 extern char 배열 생성하기 본문

카테고리 없음

HTML의 p 태그를 한국어로 번역하겠습니다.C에서 extern char 배열 생성하기

스택큐힙리스트 2023. 11. 18. 00:19
반응형

C언어에서 외부 문자 배열을 만드는 방법은 어떻게 되나요?


char cmdval[128]를 정의하는 다양한 방법을 시도해봤지만 항상 'cmdval'에 대한 정의되지 않은 참조라고 나옵니다.


first.c 파일에서 cmdval에 문자열을 넣고 second.c 파일에서 사용하려고 합니다. extern char cmdval[128]으로 된 global.h 파일을 추가해봤지만 안 됐습니다.


업데이트:


global.h


extern char cmdval[128];

first.c


#include global.h
char cmdval[128];
function(){
strcpy(cmdval, a string);
}

second.c


#include global.h
function(){
printf(%s \n,cmdval); //에러
}

실패 :( `cmdval'에 대한 정의되지 않은 참조


편집: 나는 리눅스에서 작업하고 있습니다 (미니 운영 체제 xv6을 편집 한 다음 qemu에서 컴파일하고 실행합니다). 장애물인지 모르겠습니다.

답변 1

선언하려면 .h 파일에 선언해야 합니다.


extern char cmdval[128];

그러고 나서 first.c에서 값을 정의합니다.


char cmdval[128];

그런 다음 .h 파일을 포함하는 모든 것은 first.o와 링크되어 있으면 이에 액세스할 수 있습니다.


자세히 말하자면, extern은 이를 참조할 외부 변수가 있다는 것을 나타냅니다... 그렇지 않으면 cmdval을 어딘가에서 선언하지 않으면 cmdval은 존재하지 않고 extern 참조도 아무것도 참조하지 않을 것입니다.


예시:


global.h:


extern char cmdval[128];

first.c:


#include global.h
char cmdval[128];
int main() {
strcpy(cmdval, testing);
test();
}

second.c:


#include global.h
void test() {
printf(%s\n, cmdval);
}

이렇게 컴파일할 수 있습니다:


gcc first.c second.c -o main

또는 먼저 .o 파일을 만들고 링크할 수도 있습니다.

gcc -c first.c -o first.o
gcc -c second.c -o second.o
gcc first.o second.o -o main

gcc -c first.c -o first.o
gcc -c second.c -o second.o
gcc first.o second.o -o main

답변 2

C에서 extern char 배열 생성하기
C 언어는 문자열을 다루는 데에도 효과적으로 사용될 수 있습니다. 이때, 문자열을 배열로 표현하는 것은 매우 일반적입니다. C 언어에서 extern 키워드는 다른 파일에 선언된 변수를 사용할 수 있도록 해줍니다. 따라서 extern char 배열은 전역 변수로 선언되지만 다른 파일에서도 접근할 수 있는 특징을 가지게 됩니다.
extern char 배열을 생성하는 가장 기본적인 방법은 다음과 같습니다.
1. 외부 파일(지역 파일이 아닌 다른 파일)에 배열 선언하기
```
// 파일: external_file.c
extern char myArray[10]; // 다른 파일에서 접근할 수 있는 배열 선언
void someFunction() {
// ...
}
```
2. 외부 파일에서 배열 정의하기
```
// 파일: main.c
#include
// extern 키워드로 선언된 배열에 대한 정의
char myArray[10] = Hello;
extern void someFunction(); // 외부 파일에 정의된 함수 선언
int main() {
printf(%s\n, myArray); // Hello 라고 출력됨
someFunction(); // 외부 파일의 함수 호출
return 0;
}
```
위의 예시에서, `external_file.c` 파일에 있는 extern 키워드로 선언된 myArray 배열은 이후에 `main.c` 파일에서 사용될 수 있게 됩니다. main 함수에서는 extern 키워드 없이 해당 배열에 접근하여 출력할 수 있습니다.
앞서 설명했듯이, extern char 배열은 다른 파일에서도 접근 가능하므로 코드의 모듈성과 재사용성을 향상시킬 수 있습니다. 하지만 이러한 방식은 변수나 배열에 대해 다른 파일과의 의존성을 가지고 있기 때문에 신중하게 사용해야 합니다.
여러분이 C 프로그래밍에서 extern char 배열을 다룰 때 이러한 지침을 따른다면, 코드의 가독성과 유지 보수성을 향상시킬 수 있을 것입니다.

반응형
Comments