2012-05-02 2 views
0

C++ 컴파일러와 관련하여 질문이 있습니다.C++ 컴파일러 - 공통 기호

정확하게 C++ 컴파일러가 공통 심볼을 생성 할 때? C 컴파일러를 사용하면 객체 파일에 공통 심볼을 제공 할 수 있지만 C++ 컴파일러 (GNU)를 사용하여 동일한 코드를 컴파일하면 정의되고 정의되지 않은 심볼 만 가져옵니다.

그래서 어떤 상황에서 변수/함수가 C++에서 일반적인 것으로 컴파일 될 수 있습니까?

답변

1

일부는 절대로 수행하지 않습니다. 늦게 애석하게도 Watcom C++ 컴파일러는 인라인 함수 인스턴스를 절약하기 위해 공통 기호를 잘 사용했습니다. 이러한 방식으로 경제적으로 해결할 수있는 다양한 사례가 extern입니다.

+0

감사합니다. 나는 객체 심볼 유형을 요약하려고하고 있는데, 공통적 인 것에 부합하는 예제가 필요할 것이다. 그래서 나는이 경우에 그것을 제공 할 수 없을 것이라고 생각한다. – cosinus

+0

@cosinus이 예제는 인라인 함수 호출입니다! – EJP

1

일반적인 기호가 존재하는 가장 큰 이유는 포트란이 공통 블록을 가지고 있기 때문에 "공통 기호"라는 이름이 있기 때문입니다. 공통 심볼의 개념은 C++과 상반되는 개념이며 다소 엄격한 정의 규칙입니다. C에는 비슷한 규칙이 있지만 C 표준은 동일한 기호에 대한 여러 정의를 허용하는 것이 언어에 대한 공통적 인 확장이라는 것을 인식합니다. C++에는 "공통 확장"부록이 없습니다. 공급 업체가 표준과 호환되거나 그렇지 않습니다.

결론 : C++ 컴파일러가 공통 심볼을 생성 할 이유가 없습니다.