| |||
| Home > 언어 확장 > 표준 C++ 언어 확장 > 상수 읽기/쓰기 | |||
외부 상수에 대한 링키지 지정은 상수가 동적으로 초기화되거나 가변 구성원을 포함할 수 있음을 나타냅니다.
"C++:read/write" 링키지는 --apcs /rwpi로
컴파일한 코드에서만 사용해야 합니다. 이 옵션을 사용하여 기존 코드를 다시 컴파일할 경우 동적으로 초기화되거나 가변
구성원을 포함할 수 있는 외부 상수에 대해 링키지 지정을 변경해야 합니다.
--apcs /rwpi 옵션을 사용하여 C++를 컴파일하는 것은 ISO C++
표준에서 벗어납니다. Example 3.1의
선언은 x가 읽기 전용 세그먼트에 있다고 가정합니다.
x(사용자 정의 생성자 포함)의 동적 초기화는 상수에서 불가능하며 T는
가변 구성원을 포함할 수 없습니다. Example 3.2의 새 링키지 지정에서는 x가 상수를
사용하여 초기화되었더라도 읽기/쓰기 세그먼트에 있음을 선언합니다. x의 동적 초기화가
허용되며 T는 가변 구성원을 포함할 수 있습니다. x, y 및 z 정의에 대한
링키지 지정은 다른 파일에서도 서로 동일해야 합니다.
Example 3.2. 링키지 지정
extern const int z; /* in read-only segment, cannot */
/* be dynamically initialized */
extern "C++:read/write" const int y; /* in read/write segment */
/* can be dynamically initialized */
extern "C++:read/write"
{
const int i=5; /* placed in read-only segment, */
/* not extern because implicitly static */
extern const T x=6; /* placed in read/write segment */
struct S
{
static const T T x; /* placed in read/write segment */
};
}
상수 개체는 다른 링키지와 함께 다시 선언하지 마십시오. Example 3.3의 코드에 컴파일 오류가 발생합니다.
C에는 링키지 지정이 없으므로 C++에서 선언된 const 개체를 C의 extern "C++:read/write"로
사용할 수 없습니다.