์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ ์ ์์ต๋๋ค.
http://changho-myrepository.blogspot.com/2007/10/pragma.html
2007๋ 10์ 17์ผ ์์์ผ
#pragma
์์ง #pragma๊น์ง ์จ๋ณธ์ ์์ง๋ง, ์์ผ๋ก ํ์ํ ๊ฒ ๊ฐ์์ ํผ์์
#pragma๋ define ์ด๋ include์ ๊ฐ์ด #์ผ๋ก ์์ํ๋ ์ ์ฒ๋ฆฌ๊ตฌ๋ฌธ(precompiler)์ ํ๋์ด๋ค.
์ปดํ์ผ๋ฌ์ ์ข
์์ ์ธ ๊ตฌ๋ฌธ์ด๋ผ ์ปดํ์ผ๋ฌ๊ฐ ๋ณ๊ฒฝ๋์์ ๊ฒฝ์ฐ ์ ๋๋ก๋ ๋์์ ๋ณด์ฅํ์ง ๋ชปํ๋ฏ๋ก ํ๋ก์ ํธ ์งํ์ค์ ์๋ก ๋ค๋ฅธ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ฌ์ฉํ์ง ์์์ด ๋ฐ๋์ง ํ๊ฒ ๋ค.
- ๋์ ๋์ฒดํ๋ ๋ฌธ๋ฒ์ ์ฌ์ฉํด์ผ ๋๊ฒ ๋ค.
#pragma once
์ด๊ฒ์ "์ปดํ์ผ๋ฌ์๊ฒ ํ๋ฒ๋ง ์ปดํ์ผํด!" ๋ผ๊ณ ๋ช
๋ นํ๋ค.
ํค๋์ ์ค๋ณต์ ๋ง์์ค๋ค.
๋ฌด์จ๋ง์ธ๊ฐ ํ๋ฉด
a.h๋ฅผ ๊ตฌํํ a.cpp, a.h๋ ๋ ๋ฆฝ์ ์ด๋ค.(include๊ฐ ์๋ค.)
b.h๋ฅผ ๊ตฌํํ b.cpp, c.h, a.h์์๋ก include
c.h๋ฅผ ๊ตฌํํ c.cpp, a.h๋ฅผ include
์ปดํ์ผํ๋ฉด b.h์์ c.h๋ฅผ ํฌํจ์ํค๋ผ๊ณ ๋์ด์๋ค? ํ๊ณ c.h์ ๋ค์ด๊ฐ๊ณ ์ด? a.h๋ฅผ ํฌํจํ๋ผ๊ณ ๊ทธ๋ฌ๋ค? ์ด๋ฌ๊ณ a.h๋ฅผ ํฌํจํ c.h๊ฐ b.h๋ก ๋์์จ๋ค ๊ทธ๋ฆฌ๊ณ a.h๋ฅผ ํฌํจํ๋ผ๋ ๋ช
๋ น์ ๋ฐ๊ณ a.h๋ฅผ ์ถ๊ฐํ๋ค๋ณด๋ฉด ๊ฐ์ ๋ณ์์ ํจ์์ ์ธ์ด ๋์ด์๋ค. ์๋ฌ์๋ฌ~
๊ฐ์ ์ ์ธ์ด ๋ ๋ฒ ๋ฐ๋ณต๋๋ ๋น์ฐํ ์ถฉ๋์ด ๋๋ค. ์ปดํ์ผ๋ฌ๊ฐ ๋๋ํ์ฌ ๋จ์ํ ๊ฒฝ๊ณ ์ฒ๋ฆฌ๋ง ํด์ฃผ๊ณ ์์์ ํ๋๋ก ์ข
ํฉํด์ค ์๋ ์์ง๋ง ๋๋ถ๋ถ์ ๊ธฐ๋ณธ์ ์ธ ์ปดํ์ผ๋ฌ๋ ์ด๊ฑด ์๋์์~ ํ๋ค.
์ด๋ด ๋ ์จ์ฃผ๋ ๊ฒ์ด๋ค. pragma once
์ด๋ c๊ธฐ๋ณธ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ ๊ตฌํํ ์ ์๋ค.
#ifdef _MYCOMPILECK
#define _MYCOMPILECK
// ํค๋ ํ์ผ์ ๋ด์ฉ ์ ์ธ
#endif
#pragma comment()
๊ธฐ๋ณธ์ ์ธ pragma comment()์ ํ์์ ๋ค์๊ณผ ๊ฐ๋ค.
#pragma comment( comment-type, ["comment string"] )
[] ์์ ๊ตฌ๋ฌธ์ comment-type์ ๋ฐ๋ผ ํ์ํ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
comment type์๋ compiler, exestr, lib, linker, user ๋ฑ์ด ์ฌ ์ ์๋ค.
#pragma comment( linker, "/subsystem:windows" )
#pragma comment( linker, "/subsystem:console" )
linker ๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ก์ ํธ๋ฅผ console application์ธ์ง win32 application์ธ์ง ๋ช
์ํด์ค ์ ์๋ค.
๋ํ ์น์
์ ์ค์ ์ ํ ์ ์๋ค.
#pragme comment( linker, "SECTION:.SHAREDATA,RWS" )
#pragma data_seg("SHAREDATA") ์ ํจ๊ป ์ฌ์ฉํ์ฌ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ฑํ๋ค.
์์ ๋ช
๋ น์ด ๋์ def ํ์ผ ์์ ์๋์ ๊ฐ์ด ํด์ฃผ์ด๋ ๋๋ค.
SECTIONS
SHAREDATA READ WRITE SHARED
์ด ์ค ๊ฐ์ฅ ๋ํ์ ์ธ ์ฌ์ฉ๋ฒ์ ๋ช ์์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋งํฌ์ด๋ค.
#pragma comment(lib, "xxxx.lib")
์ ๊ฐ์ด ์ฌ์ฉํ์ฌ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋งํฌ์์ผ ์ค๋ค.
์ฌ๋ฌ์ฌ๋์ด ๊ฐ์ด ์ํํ๋ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ์ด์ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ lib๋ฅผ ๋งํฌํ๋ ๊ฒ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋งํฌ๋์ด์๋ค๋ ์ฌ์ค์ ์๊ธฐ์๋ ์ข๊ณ ๊ตณ์ด ์ฃผ์๋ค๋ผ ์ค๋ช
ํ ํ์๋ ์์ด ์ข์ง ์๋ ์ถ๋ค. (์๋ค๋ ์ฌ์ค์ ์์ง๋ง ์์ง ํ๋ก์ ํธ ์ํ์ค ์ค์ ๋ก ์ฌ์ฉํด ๋ณธ์ ์ ์์)
#pragma data_seg()
pragma data_seg()์ ํ์์ ๋ค์๊ณผ ๊ฐ๋ค.
#pragma data_seg( ["section-name"[, "section-class"] ] )
[]๋ ์ฌ์ฉํ์ง ์์๋ ๋๋ค๋ ์๋ฏธ์ด๋ค.
#pragma data_seg( "SHAREDATA" )
int x;
char y;
#pragma data_seg()
DLL ํ์ผ์ ๋ง๋ค์ด๋ณด๋ฉด์ ์ ์ผ ๋ง์ด ์ฌ์ฉํด ๋ณด์๊ณ ๊ฐ์ฅ ํท๊ฐ๋ ค ํ๋ ๋ถ๋ถ์ด๊ธฐ๋ ํ๋ค.
DLL์ ๋ฐ์ดํฐ ๊ณต์ ๋ฅผ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
๊ณต์ ํ ์น์
์ ๋ง๋๋ ๊ฒ์ด๋ค. ์์ ๋ช
๋ น์ด๋ ํ์์ ์ผ๋ก ์์์ ์ฌ์ฉ๋ ๋ ๊ฐ์ง์ค ํ๊ฐ์ง ๋ฐฉ๋ฒ๊ณผ ํจ๊ป ์ฌ์ฉ ๋์ด์ผ ํ๋ค.
#pragme comment( linker, "SECTION:.SHAREDATA,RWS" )
SECTIONS
SHAREDATA READ WRITE SHARED
๋ ๋ค ํด๋น SECTION(SHAREDATA)์ ํ์ฉ ๋ฒ์(?์์ฑ?)๋ฅผ ์ค์ ํ๋ ๊ฒ์ด๋ค. READ, WRITE, SHARED ์ธ ๊ฐ์ง๋ฅผ ์ด๋ค๋ ์๋ฏธ~
ํด๋น ์ฌํญ์ ๋ํด msdn์์ ์์ธํ ์ ๋ณด๋ฅผ ๋ฐ๊ฒฌํ์ง ๋ชปํด ์ ์ง ๋ชปํ์๋ค(๊ฒ์๋ฅ๋ ฅ์ ๋ถ์กฑ!!)
์ด์ ๋ณ์ x์ y๋ ํด๋น dll์ ์ฌ์ฉํ๋ ์ธ๋ถ ํ์ผ๊ณผ ๊ฐ์ด ๊ณต์ ํ ์ ์๋ ๋ณ์๊ฐ ๋์๋ค.(์ธ๋ถ์์ ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ๋์๋ค.)
์ด๋ ๊ฒ ๊ณต์ ํ๋ ๋ณ์๋ ๋ฌผ๋ก new๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ ๋ณ์๋ ๊ณต์ ๊ฐ๋ฅํ๋ค.
ํนํ new ๋ memalloc(์ด๊ฑด ์์ง ๋ฏธํ์ธ์ด์ง๋ง ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด๋ฏ๋ก ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๋ณธ๋ค)์ผ๋ก ๋ฉ๋ชจ๋ฆฌํ ๋นํ ๋ณ์๋ค์ dll์ธ๋ถ์์๋ ํด์ (delete) ๊ฐ๋ฅํ๋ค.
#pragma warning
ํน์ ๊ฒฝ๊ณ ๋ฅผ ๋๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
๋น ์ฅฌ์ผ ์คํ๋์ค์ ๋ฒ์ ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋จ๋ ๊ฒฝ๊ณ ๋ ๋๋์ฑ์ด ๊ท์ฐฎ์ ์กด์ฌ์ด๋ค.(ํ์ง๋ง ์์ ํด์ ์ํด๋ณผ ๊ฒ์ ์๋ค. ๊ทธ๊ฒ์ด ๊ณง ๋ฒ๊ทธ๋ก ์ด์ด์ง ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ํนํ ํ๋ณํ์ ๊ฒฝ์ฐ ๊ฐ์ ์บ์คํ
ํ์ฌ ํ์คํ ๋ช
์ํด์ฃผ๋ ๊ฒ์ด ์ข๋ค. ์ผ๋ถ๋ฌ ๊ทธ ๊ฐ์ ๋ผ์ด๋ธ๋ค๋ ํ๋ก๊ทธ๋๋จธ์ ์์ง๋ฅผ ์ปดํ์ผ๋ฌ์๊ฒ ๋ณด์ฌ์ฃผ์. ๋ถ์ง๋ฐํ ์๋ก ํ์ ์์ด ๊ฐ๋ ์ผ์ด ์ ์ด์ง๋ค. ๋
ธ๋ ฅํ์~)
ํ์์ ์ด์ ๊ฐ๋ค.
#pragma warning( warning-specifier : warning-number-list [; warning-specifier : warning-number-list...] )
#pragma warning( push[ ,n ] )
#pragma warning( pop )
์ค์ ์ฌ์ฉ์ ์๋์ ๊ฐ์ด ํ๋ค.
#pragma warning( disable:4996 )
#pragma message()
์ปดํ์ผ ์ค์ ๋ฉ์ธ์ง๋ฅผ ๋ฟ๋ ค์ค๋ค.
๋ง์ด ํ์์๋ค-.-/
#pragma message("merong")
์์ฑ์: changho ์์น ์ค์ 11:18