inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

홍정모의 따라하며 배우는 C++

4.2 전역 변수, 정적 변수, 내부 연결, 외부 연결

45:30 contants 전역 변수들 extern 선언, 정의 관련

해결된 질문

364

JasonChoi

작성한 질문수 1

1

constexpr 변수들도 extern 선언, extern 정의를 따로 분리하는 방법을 적용할 수 없을까요? 

즉, 45:30에 나온 메모리 낭비를 하지않는 전역변수 선언및 정의 방법을

constexpr 전역 변수들로 하고싶은데, 선언과 동시 초기화를 하라고 에러가 뜨네요;;

지금 제가 하고 있는 프로젝트에 배열 선언시 상수를 통한 사이즈 초기화를 해야되서

const 변수가 아닌 constexpr 변수를 써야 하는데(const시 에러뜸)

constexpr 변수들을 "2.9 심볼릭 상수" 에서 나왔던 그대로 헤더파일에 선언과 동시 초기화를 했습니다.

그러나 하나의 constexpr변수에 cpp파일마다  제각각 다른메모리 주소를  가지는 문제가 발생합니다(43:16 부분)

동일한 방법을 적용(45:30) 하려고 했지만 constexpr은 선언과 동시 초기화를 해야되서 에러가 발생합니다.

어떻게 해야 할까요? constexpr 전역변수는 어쩔수 없이 메모리 낭비를 감수 해야 할까요?

enum 을 써서 했더니 되긴하는데, constexpr을 쓰고 싶습니다

세줄 요약하면

1.하나의 헤더파일에 있는 constexpr 전역변수들을 모아두고, 여러 cpp파일에서 #include "constants" 를 통해 상수들을 가져옴

2. 하나의 constexpr 전역변수에, cpp 파일마다 각기 다른 전역변수 주소들을 갖고있는 사태 발생(43:16 부분)

3.constexpr 은 선언과 동시 초기화 해야되서, 45:30에 나온 방법이 안됨, 다른 방법이 있는지?

즉, 2번사태가 나오지 않는 constexpr 전역변수 선언및 정의법이 궁금합니다. 

C++

답변 1

2

홍정모

https://blog.quasardb.net/2016/11/22/demystifying-constexpr

C++ 14부터는 static constexpr도 가능하네요. const는 초기화를 반드시 하셔야 합니다.

어떤 프로젝트를 진행하시는 지는 모르겠습니다만, 요즘에는 변수 한 두개로 메모리 낭비를 고민하지는 않습니다.

변수가 메모리에 저장되는 것을 알려주는 강의가 어떤강의였죠

1

466

1

메모리 주소 10진수로 출력

1

653

1

클래스 템플릿 특수화에서 boolalpha로 표현된 리턴값에 대해 질문이 있습니다.

1

499

1

여러가지 리턴 타입에 관한 강의가 어떤 걸까요?

1

534

1

메모리 주소에 관한 질분

0

679

1

인터페이스 클래스에서 reportError의 매개변수에 대해 궁금한 것이 있습니다.

0

549

1

형변환 오버로딩에서 const 관련 질문이 있습니다.

0

443

1

Digit 뒤에 reference를 사용하는 이유

0

510

1

4.2 전역 변수, 정적 변수, 내부 연결, 외부 연결

0

323

1

dat파일이...

0

539

1

TODO:대입 연산자 오버로딩에 대한 소스코드입니다.

0

644

1

복사 생성자 관련 질문이 있습니다.

0

454

1

수업 중 궁금한점이 있습니다.

1

390

1

라이브러리자체가 이해가 되지 않습니다.

0

561

1

마지막 예제 질문

0

302

1

증감연산자 위치에 따른 수행 순서 질문입니다.

0

375

1

단항 연산자 오버로딩에서 return 부분에 질문이 있습니다.

1

411

1

friend함수 관련 질문이 있습니다.

0

312

1

operator+ 정의부분에서 궁금한 것이 있습니다.

0

447

1

3분 17초 질문

0

350

1

함수에 값을 대입한다는 개념이 이해가 되지 않습니다.

0

448

1

int getvalue() const에서 const는 왜 뒤에 붙는건가요?

0

445

2

const Something &st에서 const를 빼면 안되나요?

0

300

1

friend함수는 다른 클래스의 멤버함수로 쓸 수 없나요??

1

493

1