C ++ 네임 스페이스 내에서 extern const 참조

내 프로젝트의 다른 위치에서 TaxConstants.hpp 네임 스페이스 TAXCONSTANTS에 선언 된 상수 int SIZE를 사용하려고합니다. 컴파일을 시도 할 때 SIZE가 참조되는 모든 곳에서 'SIZE'에 대한 정의되지 않은 참조를 얻습니다.

TaxConstants.hpp 파일

#ifndef TaxConstants_hpp
#define TaxConstants_hpp


namespace TAXCONSTANTS
{
     extern const int SIZE = 4; // I have tried with and without extern
}

#endif //TAXCONSTANTS_HPP

main.cpp

#include <iostream>
#include "TaxConstants.hpp"
using namespace std;
using namespace TAXCONSTANTS;

int main()
{
extern const int SIZE;

// This is a struct defined in another file. It is a sample of my use for SIZE. I left out the #include above to simplify things. 
taxPayer payers[SIZE];  

//More code

return 0;
}

추가 정보 : 이것은 학교 프로젝트이며 선생님이 TAXCONSTANTS 네임 스페이스의 TaxConstants.hpp 파일에 상수를 선언하도록 요구했습니다.

총 5 개의 파일이 있으며, 내 기능이있는 파일에 SIZE 오류에 대한 정의되지 않은 참조가 동일합니다.

나는 extern 함수와 네임 스페이스에 대한 유사한 설명을 찾는 데 몇 시간을 보냈지 만 대부분의 제안은 처음에는 다른 솔루션을 제공하는 것에 반대합니다. 나는 불행히도 사용할 수 없습니다. 사람들이 가진 다른 오류는 내가 가지고 있지 않은 "다중 장식"을 얻는 것입니다.

편집하다

더 자세한 내용은 아래 Brians 설명을 참조하십시오.

내가해야 할 일은

const int SIZE = 4;

네임 스페이스 TAXCONSTANTS의 TaxConstants.hpp 파일 내에 있습니다.

그런 다음 'extern const int SIZE;'를 제거하십시오. 내 주 파일에서 대신 크기를 사용하려는 모든 곳에서 TAXCONSTANTS :: SIZE로 SIZE를 참조하십시오.

이것은 내가 완전히 잊은 기본적인 네임 스페이스 항목입니다.

브라이언 비

당신이 정의하는 경우 SIZE 없이extern 키워드가 있기 때문에, 그것은 내부 연결을해야합니다 const. 당신은 그것을 참조 할 수 있습니다 main.cppTAXCONSTANTS::SIZE. 컴파일러 SIZE가 사용되는 모든 곳에서 값을 인라인 할 수 있기 때문에 권장 됩니다.

당신이 정의하는 경우 SIZE extern 키워드는 외부 링크를하고 여러 정의 오류를 원하지 않는다면 그것은 헤더에 있으면 안됩니다. 대신 .cpp프로그램의 나머지 부분에 링크 될 파일에 정의해야합니다 . 이 경우 SIZE전체 프로그램에 사본이 하나만 있습니다 . 어떤 이유로 든 실제로 전체 프로그램에 하나의 복사본 만 있어야하는 경우가 아니라면 이 방법을 피해야합니다 (대신를 사용 하지 않는 방법을 선호 함 extern) .SIZE

두 경우 모두 네임 스페이스 SIZE의 구성원이 TAXCONSTANTS됩니다.

SIZE내부 를 재 선언하려는 당신의 시도 main는 당신이 생각하는대로하지 않습니다! 다음 내부 main:

extern const int SIZE;

실제로 SIZE전역 네임 스페이스에서 선언하는 효과가 있습니다. SIZE전역 네임 스페이스에의 정의가 없기 때문에 링크 타임에 정의되지 않은 참조 오류가 발생합니다. 정의 된 변수 를 참조하는 올바른 방법 아닙니다 .SIZETAXCONSTANTS

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

네임 스페이스 내부의 구조체 유형 참조

분류에서Dev

c # 참조 오류- 'EntityFramework'네임 스페이스에 'Extended'형식 또는 네임 스페이스 이름이 없습니다.

분류에서Dev

c # 참조 오류- 'EntityFramework'네임 스페이스에 'Extended'형식 또는 네임 스페이스 이름이 없습니다.

분류에서Dev

동일한 솔루션 내에서 다른 Testing-Project의 프로젝트에서 C # 네임 스페이스 참조

분류에서Dev

동일한 네임 스페이스가 현재 네임 스페이스 내에있는 동안 네임 스페이스 참조

분류에서Dev

유형 또는 네임 스페이스 이름이 참조없이 네임 스페이스에 없습니다.

분류에서Dev

파일에서 const 네임 스페이스 변수 값로드

분류에서Dev

ASP.NET MVC에서 JSON에 대한 참조 네임 스페이스

분류에서Dev

Typescript에서 네임 스페이스를 Type으로 참조하는 방법

분류에서Dev

CSharpCompilation .net Core에서 네임 스페이스 / 참조를 얻지 못함

분류에서Dev

JS에서 다른 파일을 참조 할 때 네임 스페이스 사용

분류에서Dev

네임 스페이스 C ++를 사용하는 정의되지 않은 참조

분류에서Dev

오류 C2653. C ++에서 유형 또는 네임 스페이스 이름을 찾을 수 없습니다 (참조 있음).

분류에서Dev

Django에서 내 (재사용 가능한) 앱의 URL 네임 스페이스를 참조하십시오.

분류에서Dev

네임 스페이스 C ++ 내부에 클래스 생성

분류에서Dev

C ++의 헤더에서 네임 스페이스를 사용할 때 오류에 대한 정의되지 않은 참조

분류에서Dev

C #에서 사용되지 않는 네임 스페이스를 참조 할 때 컴파일 패널티가 있습니까?

분류에서Dev

어쨌든 매번 네임 스페이스를 참조하지 않고 C #에서 방향을 가져올 수 있습니까?

분류에서Dev

Expression <Func <>> 조건 자에서 참조 된 속성의 전체 네임 스페이스 검색

분류에서Dev

형식 또는 네임 스페이스 이름이 네임 스페이스에 없습니다 (어셈블리 참조가 누락 되었습니까?).

분류에서Dev

이름 조회 실패-C ++ 네임 스페이스

분류에서Dev

Linux에서 마운트 네임 스페이스보기 / 조작

분류에서Dev

외부에서 네임 스페이스 변수 값 변경 (C ++)

분류에서Dev

Rails-뷰에서 네임 스페이스 테이블 속성을 참조하는 방법

분류에서Dev

XML 서명 참조 다이제스트는 부모 네임 스페이스를 사용합니다.

분류에서Dev

.Net Core에서 System.Windows 네임 스페이스를 참조하는 방법은 무엇입니까?

분류에서Dev

vNext는 참조 된 패키지에서 네임 스페이스를 볼 수 없습니다.

분류에서Dev

NuGet 패키지 참조의 네임 스페이스는 Controller에서 찾을 수 없습니다.

분류에서Dev

관련 모델에서 네임 스페이스 모델을 참조하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    네임 스페이스 내부의 구조체 유형 참조

  2. 2

    c # 참조 오류- 'EntityFramework'네임 스페이스에 'Extended'형식 또는 네임 스페이스 이름이 없습니다.

  3. 3

    c # 참조 오류- 'EntityFramework'네임 스페이스에 'Extended'형식 또는 네임 스페이스 이름이 없습니다.

  4. 4

    동일한 솔루션 내에서 다른 Testing-Project의 프로젝트에서 C # 네임 스페이스 참조

  5. 5

    동일한 네임 스페이스가 현재 네임 스페이스 내에있는 동안 네임 스페이스 참조

  6. 6

    유형 또는 네임 스페이스 이름이 참조없이 네임 스페이스에 없습니다.

  7. 7

    파일에서 const 네임 스페이스 변수 값로드

  8. 8

    ASP.NET MVC에서 JSON에 대한 참조 네임 스페이스

  9. 9

    Typescript에서 네임 스페이스를 Type으로 참조하는 방법

  10. 10

    CSharpCompilation .net Core에서 네임 스페이스 / 참조를 얻지 못함

  11. 11

    JS에서 다른 파일을 참조 할 때 네임 스페이스 사용

  12. 12

    네임 스페이스 C ++를 사용하는 정의되지 않은 참조

  13. 13

    오류 C2653. C ++에서 유형 또는 네임 스페이스 이름을 찾을 수 없습니다 (참조 있음).

  14. 14

    Django에서 내 (재사용 가능한) 앱의 URL 네임 스페이스를 참조하십시오.

  15. 15

    네임 스페이스 C ++ 내부에 클래스 생성

  16. 16

    C ++의 헤더에서 네임 스페이스를 사용할 때 오류에 대한 정의되지 않은 참조

  17. 17

    C #에서 사용되지 않는 네임 스페이스를 참조 할 때 컴파일 패널티가 있습니까?

  18. 18

    어쨌든 매번 네임 스페이스를 참조하지 않고 C #에서 방향을 가져올 수 있습니까?

  19. 19

    Expression <Func <>> 조건 자에서 참조 된 속성의 전체 네임 스페이스 검색

  20. 20

    형식 또는 네임 스페이스 이름이 네임 스페이스에 없습니다 (어셈블리 참조가 누락 되었습니까?).

  21. 21

    이름 조회 실패-C ++ 네임 스페이스

  22. 22

    Linux에서 마운트 네임 스페이스보기 / 조작

  23. 23

    외부에서 네임 스페이스 변수 값 변경 (C ++)

  24. 24

    Rails-뷰에서 네임 스페이스 테이블 속성을 참조하는 방법

  25. 25

    XML 서명 참조 다이제스트는 부모 네임 스페이스를 사용합니다.

  26. 26

    .Net Core에서 System.Windows 네임 스페이스를 참조하는 방법은 무엇입니까?

  27. 27

    vNext는 참조 된 패키지에서 네임 스페이스를 볼 수 없습니다.

  28. 28

    NuGet 패키지 참조의 네임 스페이스는 Controller에서 찾을 수 없습니다.

  29. 29

    관련 모델에서 네임 스페이스 모델을 참조하는 방법은 무엇입니까?

뜨겁다태그

보관