2017-11-08 22 views
2

우리는 C++ 정적 초기화 순서를 사용하여 C++ 라이브러리에서 여러 객체의 생성을 제어합니다. GCC는 init_priority을 제공하고 Microsoft는 init_seg()을 제공합니다.IBM XL C/C++는 init_priority를 ​​제공합니까?

IBM의 XL C/C++ 컴파일러와 비슷하지만 유용한 검색 결과는 유용하지 않습니다. 컴파일러는 Linux와 AIX에서 실행됩니다. 분명히 리눅스는이 기능을 제공하지만, 나는 AIX 런타임 지원에 대해 확신하지 못한다.

첫 번째 질문은 AIX 플랫폼이 초기화 우선 순위를 지원합니까?

두 번째 질문은 IBM의 XL C/C++가 소스 코드를 통해 제어하는 ​​방법을 제공합니까?

+0

xlc 문서를 통해 질문에 대한 답변을 찾을 수 있어야합니다. 그걸 찾으려고 했니? 또는 궁금한 점이 있으면 IBM 지원부에 문의하십시오. –

+0

@JesperJuhl - ""[xlc docs]를 (를) 검색해 보셨습니까? "- 예, AIX 및 Linux 설명서를 모두 읽었지만 찾지 못했습니다. 그것이 다른 이름으로 간다면, 아니면 그렇지 않을 때 사용할 수 있다고 생각한다면 궁금합니다. Linux xlC 컴파일러가 있어야한다고 생각됩니다. – jww

+0

초기화를 하나의 파일로 옮기고 원하는 순서대로 넣을 수 있습니까? (적절한 네임 스페이스 문 사용 등) – stark

답변

1

Linux 용 IBM XL C/C++ V13.1.1 이상에서는 초기화 우선 순위를 제어 할 수있는 방법을 제공합니다. init_priority 변수 속성을 통해 제어하는 ​​방법에 대한 자세한 내용은 Knowledge Center을 참조하십시오. GCC는 정적 오브젝트 레벨에서 초기화 우선 순위.

AIX 용 IBM XL C/C++는 init_priority를 지원하지 않습니다하지만 -qpriority#pragma priority와 같은 링크 단위 내에서 .o 인 파일 사이의 전역 변수 초기화의 순서를 제어하는 ​​방법을 제공한다. 해당 옵션에 대한 자세한 내용은 Knowledge Center에서 확인할 수 있습니다. 또한 -qmkshrobj=priority (Knowledge Center)은 프로그램 시작시 공유 오브젝트 (및 a.out)의 초기화 순서를 제어합니다 (XL AIX는이 메소드를 사용하지만 XL Linux는 공유 오브젝트 초기화 순서를 판별하기 위해 종속성을 사용합니다). 번역 단위 내의 순서는 선언적 순서 여야합니다. 그렇지 않으면 아직 초기화되지 않은 변수를 참조하는 초기화를 얻을 수 있습니다.