C++ Primer 노트 - 선언 및 정의

1728 단어 Prim
원래 extern int i는 성명 변수일 뿐 성명과 정의는 미묘한 차이가 있다.
C++ 프로그램은 보통 많은 파일로 구성되어 있습니다.... 을 위하여
여러 개의 파일이 같은 변수에 접근합니다. C++는 성명과 정의를 구분합니다.변수의 정의는 변수에 저장 공간을 분배하는 데 사용되며, 변수에 초기 값을 지정할 수도 있다.같은 거리에 있다
  ,          。


프로그램에 변수의 종류와 이름을 표시하는 데 사용됩니다.정의도 성명입니다. 변수를 정의할 때 종류와 이름을 설명합니다.extern 키워드를 사용하여 변수 이름을 정의하지 않고 설명할 수 있습니다.변수를 정의하지 않은 성명은 대상 이름, 대상 유형, 대상 유형 앞의 키워드 extern을 포함합니다.
      extern int i;   // declares but does not define i

      int i;          //  declares and defines i


extern 성명은 정의가 아니며 저장 공간도 분배되지 않습니다.사실상, 그것은 변수가 프로그램의 다른 곳에 정의되어 있다는 것을 설명할 뿐이다.프로그램에서 변수는 여러 번 설명할 수 있지만 한 번만 정의할 수 있습니다. 
성명도 정의일 때만 성명을 초기화할 수 있습니다. 정의만 저장 공간을 분배하기 때문입니다.초기화식은 반드시 저장 공간이 있어야 초기화할 수 있다.만약 성명에 초기화식이 있다면, 이것은 정의로 간주될 수 있습니다. 설령 성명이 extern:
      extern double pi = 3.1416; // definition


extern을 사용했지만, 이 문장은 pi를 정의하여 저장 공간을 분배하고 초기화했습니다.extern이 함수 외부에 있을 때만 초기화식을 포함할 수 있습니다.
초기화된 extern 선언은 정의로 간주되기 때문에 변수의 다음 정의는 모두 잘못된 것입니다.
      extern double pi = 3.1416; // definition

      double pi;                 // error: redefinition of pi


마찬가지로 초기화된 extern 선언이 포함된 다음 선언도 잘못되었습니다.
      extern double pi = 3.1416; // definition

      extern double pi;          // ok: declaration not definition

      extern double pi = 3.1416; // error: redefinition of pi

                     ,           。


C++ 언어에서 변수는 한 번만 정의할 수 있어야 하며, 변수를 사용하기 전에 변수를 정의하거나 성명해야 한다. 
여러 파일에 사용되는 변수는 정의와 분리된 성명이 필요합니다.이 경우 한 파일은 변수의 정의를 포함하고, 이 변수를 사용하는 다른 파일은 변수의 정의를 포함한다.

좋은 웹페이지 즐겨찾기