반응형
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
- 소프트웨어
- 머신러닝
- 2
- 알고리즘
- 코딩
- 웹개발
- 자바스크립트
- 컴퓨터비전
- 프로그래밍
- I'm Sorry
- 클라우드컴퓨팅
- 컴퓨터과학
- 파이썬
- 보안
- 네트워크보안
- 소프트웨어공학
- 데이터베이스
- 데이터구조
- 딥러닝
- 데이터분석
- 버전관리
- 컴퓨터공학
- Yes
- 데이터과학
- 네트워크
- 사이버보안
- 빅데이터
- 인공지능
- 프로그래밍언어
- 자료구조
Archives
- Today
- Total
스택큐힙리스트
어떻게 constexpr extern을 선언하나요? 본문
반응형
다른 파일에서 extern constexpr
변수를 선언하고 정의할 수 있을까요?
저는 시도해봤지만 컴파일러가 에러를 출력합니다:
constexpr
변수 'i
'의 선언이 정의가 아닙니다
.h 파일에 있는 내용:
extern constexpr int i;
.cpp 파일에 있는 내용:
constexpr int i = 10;
답변 1
아니요, 그걸 할 수 없어요. 여기에 표준에서 말하는 내용이 있습니다 (7.1.5 절):
1 constexpr 한정자는 변수 또는 변수 템플릿의 정의에만 적용될 수 있으며, 함수 또는 함수 템플릿의 선언에, 또는 리터럴 형식(3.9)의 정적 데이터 멤버의 선언에만 적용될 수 있습니다. 함수, 함수 템플릿 또는 변수 템플릿의 어떤 선언이 constexpr 한정자를 포함한다면, 모든 선언은 constexpr 한정자를 포함해야 합니다. [참고: 명시적 특수화는 constexpr 한정자를 제공하는 템플릿 선언과 다를 수 있습니다. 함수 매개변수는 constexpr로 선언할 수 없습니다. — 끝 노트 ]
표준에서 제시하는 몇 가지 예:
constexpr void square(int &x); // OK: 선언
constexpr int bufsz = 1024; // OK: 정의
constexpr struct pixel { // 오류: pixel은 타입입니다
int x;
int y;
constexpr pixel(int); // OK: 선언
};
extern constexpr int memsz; // 오류: 정의되지 않은 것입니다
답변 2
어떻게 constexpr extern을 선언하는지요? 이 주제에 대한 SEO 친화적인 한국어 글을 작성해드릴게요.constexpr과 extern은 각각 개별적으로 변수나 함수 선언에 사용되는 키워드입니다. 하지만 constexpr extern을 함께 사용하는 것은 적합하지 않을 수 있습니다. 그 이유에 대해 알아보고, 이러한 조합이 필요한 경우에 대해서도 알아보도록 하겠습니다.
먼저, constexpr은 변수나 함수의 평가 시간을 컴파일 타임으로 변경하는 키워드입니다. 이는 컴파일 타임에서 평가되므로 실행 시간 동안 변경되지 않는 값을 갖는 것이 중요합니다. constexpr을 사용하는 경우, 해당 변수나 함수는 상수로 취급되어 컴파일 타임에 값을 계산하고, 이를 재사용하거나 상수 표현식에 사용할 수 있습니다.
반면, extern은 변수나 함수가 다른 파일에서 이미 선언되었음을 알리는 키워드입니다. 다른 파일에 선언되었지만 해당 값을 사용하거나 호출할 때 필요한 정보를 컴파일러에 알려줍니다. 이러한 키워드를 사용하여 전역 변수나 함수를 다른 파일에서 참조할 수 있습니다.
constexpr extern 조합은 앞서 언급한 것과 같이 잘 사용되지 않는 키워드 조합입니다. constexpr은 변수나 함수의 컴파일 타임 평가를 위해 사용되는 반면, extern은 다른 파일에서 선언된 변수나 함수를 참조하기 위해 사용됩니다. 따라서 constexpr과 extern을 동시에 사용한다는 것은 정확히 어떤 목적을 달성하려는지에 따라 다를 수 있으며, 대부분의 경우 필요하지 않을 것입니다.
그러나 constexpr과 extern을 함께 사용하려는 몇 가지 예외적인 경우도 있을 수 있습니다. 예를 들어, constexpr으로 선언된 상수를 다른 파일에서 참조하고 싶은 경우에는 extern 키워드를 사용할 수 있습니다. 일반적으로 이러한 경우에는 상수를 헤더 파일에 선언하고, 해당 헤더 파일을 다른 파일에서 include하여 사용하는 방법을 추천합니다.
요약하자면, constexpr과 extern은 각각 다른 목적을 가진 키워드이며, constexpr extern 조합 자체는 일반적으로 사용되지 않는 키워드 조합입니다. 하지만 constexpr과 extern을 함께 사용하는 특수한 경우에는 상수를 다른 파일에서 참조하고 싶을 때 등 몇 가지 예외적인 상황에서 유용할 수 있습니다. 일반적인 상황에서는 constexpr과 extern을 각각 필요한 목적에 맞게 개별적으로 사용하는 것이 좋습니다.
반응형
Comments