반응형
Notice
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 컴퓨터비전
- 프로그래밍언어
- 네트워크보안
- 알고리즘
- 자바스크립트
- 데이터베이스
- 딥러닝
- 프로그래밍
- 데이터분석
- I'm Sorry
- 인공지능
- 데이터과학
- 웹개발
- 머신러닝
- 2
- 버전관리
- 컴퓨터공학
- 빅데이터
- 코딩
- Yes
- 파이썬
- 컴퓨터과학
- 자료구조
- 네트워크
- 데이터구조
- 사이버보안
- 소프트웨어공학
- 소프트웨어
- 보안
- 클라우드컴퓨팅
Archives
- Today
- Total
스택큐힙리스트
HTML의 p 태그를 한국어로 번역하겠습니다.C에서 extern char 배열 생성하기 본문
반응형
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