2012-03-15 2 views

답변

4

소스 (예 포함) : http://hi.baidu.com/jevidyang/blog/item/6d4dc436d87e3a300b55a918.html

참고 : #pragma 컴파일러 특정, 그래서 구문은 컴파일러에 따라 다를 수 있습니다.

DATA_SECTION pragma는 section name이라는 섹션에서 심볼을위한 공간을 할당합니다. C에서 프라 그마의 구문은 수 :

#pragma DATA_SECTION (symbol, "section name"); 

은 C++에서 프라 그마의 구문이 될 수있다 : 당신은 당신이 연결할 데이터 객체가있는 경우

#pragma DATA_SECTION ("section name"); 

DATA_SECTION 프라그 유용 .bss 섹션과 별도의 영역으로


CODE_SECTION pragma는 section name이라는 섹션에서 func에 대한 공간을 할당합니다. CODE_SECTION pragma는 .text 섹션과 별도의 영역에 링크하려는 코드 객체가있는 경우에 유용합니다. C에서 프라 그마의 구문은 수 :

#pragma CODE_SECTION (func, "section name") 

C에서 프라 그마 ++의 구문이 될 수있다 :

#pragma CODE_SECTION ("section name") 
+2

"이 C/C++ 구문은 ..."과 같은 것은 없습니다! DATA_SECTION 및 CODE_SECTION은 컴파일러에 따라 다르며 어떤 표준에서도 전혀 지원되지 않습니다. 일어날 일은 컴파일러에 달렸습니다. 나는 CODE_SECTION과 DATA_SECTION을 지원하지만 완전히 다른 구문을 가진 여러 컴파일러를 알고있다. – Lundin

+0

내가 ** ** ** ** ** 일 수 있다면 **, ** 당신은 downvote를 제거 할 것인가? 물론'#pragma'는 컴파일러에 따라 다릅니다. – Stijn

+0

예, 좋을 것 같습니다. 중요한 것은 이것이 어떤 표준에 의해 잘 정의되어 있다고 생각하도록 속이는 것이 아닙니다. 물론 언급 된 컴파일러가 없기 때문에 원래의 질문은 부족합니다. – Lundin

1

#pragma는 "여기에 뭔가를 다음과 구현 정의이 컴파일러 특유의"를 의미한다. 따라서 일어날 일은 사용하는 컴파일러에 따라 다릅니다. 컴파일러가이 특정 pragma를 지원하지 않으면 모든 것이 무시됩니다.


그러나이 경우 상당히 분명합니다.

#pragma CODE_SECTION(func1, "Sec1")은 "func1은 프로그램 메모리의 Sec1이라는 메모리 영역에 있어야합니다"라는 의미입니다. Sec1은 func1의 실제 코드가 할당되는 읽기 전용 메모리 위치입니다.

#pragma DATA_SECTION(globalvar1, "Sec2")은 "globalvar1이 데이터 메모리의 Sec2라는 메모리 영역에 있어야합니다."를 의미합니다. Sec2는 변수 globalvar1이 할당되는 읽기/쓰기 위치입니다.

+0

#pragama CODE_SECTION이 vc에서 지원되는 #pragma code_seg와 같은지 여부. http://msdn.microsoft.com/en-us/library/s20kdbse(v=vs.71).aspx – rashok

+0

@rajaashok 질문이나 진술 이었습니까? downvote에 대한 어떤 실제 이유, 또는 당신은 단지 그것을 느낀거야? – Lundin

관련 문제