2010-04-25 4 views
0

일부 정적 상수를 전체적으로 표시하려고합니다. 나는 C++에서 그렇게하는 법을 꽤 잘 알고있다. 문제는 이러한 상수가 일부 이국적인 경계에 정렬되어야한다는 것입니다. extern 선언에서 정렬을 지정해야합니까? 당신이 그것을 정적 선언하려는 것처럼 내가 *의 .cpp 파일에 GCC4.5외부 상수 정렬 (gcc)

을 사용하고 있습니다 * .H 파일

static const constant_t constant __attribute__((aligned(64))) = {blah,blah,blah}; 

//Which one is correct? 
extern const constant_t constant; 
extern const constant_t constant __attribute__((aligned(64))); 

답변

3

첫째, 보이는 C 파일은 내부 (파일) 링키지를 말하는 오래된 C 방식이다. 이는 글로벌화하려는 목표와 일치하지 않습니다.

정적이 제거되면 C 파일에서 속성 만 필요합니다. extern 선언은 "이 이름을 사용하고 싶습니다. 마지막으로 주소를 알아내어 여기에서 대체하십시오."라고 말합니다. 즉, C 파일의 정의 지점에서 주소가 지정되면 extern이 동일한 주소를 상징적으로 가리 킵니다.