반응형
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 |
Tags
- 자료구조
- 프로그래밍언어
- 프로그래밍
- 소프트웨어공학
- 컴퓨터과학
- 머신러닝
- 버전관리
- 데이터분석
- 데이터베이스
- 알고리즘
- 파이썬
- 코딩
- 사이버보안
- 빅데이터
- Yes
- 클라우드컴퓨팅
- 딥러닝
- 네트워크보안
- 소프트웨어
- I'm Sorry
- 자바스크립트
- 네트워크
- 보안
- 컴퓨터비전
- 웹개발
- 2
- 데이터구조
- 컴퓨터공학
- 인공지능
- 데이터과학
Archives
- Today
- Total
스택큐힙리스트
로컬 및 레지스터 변수를 extern으로 선언할 수 있나요? 본문
반응형
저는 로컬로 선언된 extern 및 레지스터 변수에 대해 궁금해 해왔습니다. 가능하다면 어떤 제한이 부과될까요?
답변 1
int i;
void f() {
extern int i;
}
는 다음과 같습니다:
int i;
void f() {
extern int i;
}
왜냐하면 이전에 선언된 int i
는 접속성을 지정하지 않았기 때문에 링크가 없다고 명시되어 있기 때문입니다:
다음 식별자는 접속성이 없습니다: 객체나 함수 이외의 것으로 선언된 식별자; 함수 매개변수로 선언된 식별자; 저장 클래스 지정자 extern이 없이 선언된 블록 범위 객체의 식별자.
이전 선언은 내부 또는 외부 링크를 지정합니다
extern int i;
void f() {
extern int i;
}
는 다음과 같습니다:
extern int i;
void f() {}
그리고:
static int i;
void f() {
extern int i;
}
는 다음과 같습니다:
static int i;
void f() {}
외부 및 내부 (static
) 연결 선언이 이전에 표시되어 있기 때문에 둘 다 이전에 표시된 외부 및 내부 연결 선언이 있습니다.
지역 extern 초기화
잘못된 C:
void f() {
extern int i = 0;
}
블록 범위 선언이 초기화되어 있기 때문입니다.
올바른 C:
extern int i = 0;
void f() {}
하지만 아마도 더 짧은 것과 동일한 것으로 동일한 스타일은 좋지 않습니다:
int i = 0;
void f() {}
왜냐하면 6.7.8 초기화가 다음과 같이 말하기 때문입니다:
식별자의 선언이 블록 범위를 갖고 있으며 식별자가 외부 또는 내부 연결을 갖는 경우 식별자에 대한 선언은 식별자에 대한 초기화가 없어야합니다.
답변 2
로컬 변수와 레지스터 변수는 extern으로 선언될 수 있을까요?키워드: 로컬 변수, 레지스터 변수, extern, 선언
로컬 변수와 레지스터 변수는 프로그래밍에서 자주 사용되는 변수 유형입니다. 하지만 이러한 변수들을 extern으로 선언할 수 있을까요? 이에 대해 알아보겠습니다.
로컬 변수는 특정 함수 또는 블록 내에서 정의되어 사용되는 변수입니다. 로컬 변수는 해당 함수 또는 블록의 실행이 끝나면 메모리에서 사라지게 됩니다. 이와 달리, 전역 변수는 프로그램 전체에서 사용 가능하며, 메모리에 지속적으로 유지됩니다.
반면, 레지스터 변수는 프로그래머가 컴파일러에게 해당 변수를 레지스터에 저장하도록 요청하는 변수입니다. 이를 통해 빠른 접근 속도와 성능 향상을 기대할 수 있습니다. 그러나 컴파일러는 이러한 요청을 무시할 수도 있습니다.
이제 로컬 변수와 레지스터 변수를 extern으로 선언하는 것에 대해 살펴볼까요? 사실, 로컬 변수와 레지스터 변수는 extern으로 선언될 수 없습니다. 왜냐하면 extern 키워드는 전역 변수를 선언하거나 다른 파일에 선언된 변수에 접근할 때 사용되기 때문입니다. 로컬 변수와 레지스터 변수는 특정 함수 또는 블록 내에서만 유효한 변수이기 때문에 다른 파일에서 접근할 수 없습니다.
따라서, 로컬 변수와 레지스터 변수는 extern으로 선언될 수 없는데, 이는 변수 범위(scope)와 밀접한 관련이 있습니다. 로컬 변수와 레지스터 변수는 해당 범위 내에서만 유효하며, 다른 파일이나 함수에서는 액세스할 수 없습니다.
결론적으로, 로컬 변수와 레지스터 변수는 extern으로 선언할 수 없습니다. 이는 변수가 선언된 범위에 따라 변수에 액세스할 수 있는지 여부가 달라지기 때문입니다. 프로그래밍에서 변수 선언을 올바르게 처리하는 것은 중요한 부분이며, 변수의 범위와 액세스 가능성을 고려해야 합니다.
반응형
Comments