본문 바로가기

Windows/MFC

#pragma

[code]#pragma comment (comment type, "string")[/code]

comment 프라그마는 출력되어지는 file에 주석을 기록시킬것을 지시합니다. comment type에 올수 있는 값들은 다음중의 하나가 될것입니다.

* exestr
linker가 ".OBJ" file에 string을 기록합니다. 이렇게 기록된 string은 실행파일내부에 기록되어지며, 이것은 결코 메모리로 load되지 않습니다. 하지만 적당한 파일 검색 유틸리티를 사용하여 실행파일에서 string을 찾아볼 수 있습니다.

* lib
".OBJ" file에 주석의 내용을 기록합니다.
library에 새로운 module을 추가하는 경우 에만 comment 프라그마를 사용하여 linker에게 결과 file에 명시할 수 있도록 지시할 수 있습니다. 다시 말하면 기존에 작성되어진 module에는 comment 프라그마를 사용하여 string을 추가 시킬수 없습니다. 새롭게 library를 작성한다면 예외일 수 있겠지요. linker는 최종의 library에서 string에 명시된 library module 이름을 포함 합니다. 여러개의 module들도 이름지어질 수 있으며 이름을 만들기 위하여 linke되어집니다.

* user
compiler는 ".OBJ" file에 string을 기록합니다. 하지만 linker에 의해 string은 무시되어집니다. object 파일에만 그 내용이 남게 됩니다.


[code]#pragma[/code]
컴파일 옵션의 지정. 컴파일러 작성자에 의해서 정의된 다양한 명령을 컴파일러에게 제공하기 위해서 사용되는 지시어이다. 컴파일러의 여러가지 옵션을 명령행 상에서가 아닌 코드상에서 직접 설정한다. #pragma는 함수의 바로 앞에 오며, 그 함수에만 영향을 준다. Turbo C는 9개의 #pragma문(warn, inline, saveregs, exit, argsused, hdrfile, hdrstop, option, startup)을 지원하고 있다.


[code]#pragma inline [/code]

컴파일할 때 어셈블러를 통해서 하도록 지시한다.즉, 인라인 어셈블리 코드가 프로그램에 있음을 알려준다. (명령행 상에서 '-B' 옵션)


[code]#pragma saveregs [/code]
이 홉션은 휴즈 메모리 모델에 대해 컴파일된 함수에게 모든 레지스터를 저장하도록 한다.


[code]#pragma warn [/code]
이 지시어는 Turbo C에게 경고 메시지 옵션을 무시하도록 한다.

[code]#pragma warn -par[/code]
이는 매개 변수(parAMETER)가 사용되지 않았다고 경고(warnING)를 내지 못하도록 한다. 이와 반대되는 표현은 #pragma warn +par 이다.

경고의 내용 앞에 (+)를 사용하면 경고를 낼 수 있도록 설정하고, (-)를 사용하면 경고를 내지 못하도록 하는 것은 모든 경고에 대해 동일하다. 명령행에서는 "-wxxx"로 경고를 설정하고 "-w-xxx"로 경고를 해제한다. 경고의 종류는 무척 많은데 자주 사용되는 것을 아래에 나타냈다. 모든 것을 알고 싶다면 컴파일러 User's Guide의 명령행 컴파일러 부분을 참고하시기 바란다.

par : 전해진 파라미터가 사용되지 않음
rvl : void 형이 아닌 함수에서 리턴값이 없음
aus : 변수에 값을 할당했으나 사용하지 않았음
voi : void 형 함수에서 리턴값이 사용되었음
sig : 부호비트(MSB)가 고려되지 않은 형변환(type-castion)에서 부호 비트를 소실할 수 있음

'Windows > MFC' 카테고리의 다른 글

비트맵 배경 제거 (TransparentBitmap)  (0) 2013.10.02
Standard C pre-defined symbols  (0) 2013.10.02
GetClassName 클래스 이름 알기  (0) 2013.10.02
jpg, Jpeg Save  (0) 2013.10.02
registry 바로 적용하기  (0) 2013.10.02