[C++] #pragma

Singery00ยท2024๋…„ 4์›” 1์ผ

C++

๋ชฉ๋ก ๋ณด๊ธฐ
1/7
post-thumbnail

๊ฐœ์š”

๐Ÿ’ก #pragma์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

C++๋กœ ์ฝ”๋”ฉ์„ ํ•˜๊ธฐ ์œ„ํ•ด ํ—ค๋” ํŒŒ์ผ์„ ๋งŒ๋“ค๋ฉด ํ•ญ์ƒ ์ƒ๋‹จ์— #pragma once๊ฐ€ ์žˆ๋‹ค.

#pragma์˜ ์—ญํ• ๊ณผ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์‹œ์™€ ํ•จ๊ป˜ ์™œ ์‚ฌ์šฉ๋˜๋Š”์ง€ ์•Œ์•„๋ณด์ž.


๋ณธ๋ก 


# ์ด๋ž€?

#์— ๋Œ€ํ•ด ์•Œ๊ธฐ ์œ„ํ•ด์„  ์ „์ฒ˜๋ฆฌ์™€ ์ปดํŒŒ์ผ์— ๋Œ€ํ•œ ์ง€์‹์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

  1. ์ „์ฒ˜๋ฆฌ๊ธฐ๋Š” ์ปดํŒŒ์ผ ์ด์ „์— #์ด ๋ถ™์€ ๋ชจ๋“  ๋ฌธ์žฅ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  2. ์ „์ฒ˜๋ฆฌ๊ธฐ์˜ ์ž‘์—…์ด ๋๋‚˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ .cppํŒŒ์ผ์„ .o ๋˜๋Š” .obj์˜ ํ–‰ํ„ฐ๋กœ ์ปดํŒŒ์ผํ•œ๋‹ค.
  3. ์ดํ›„ ๋ง์ปค๊ฐ€ .obj๋ฅผ ๋ฌถ์–ด .exe๋ฅผ ๋งŒ๋“ ๋‹ค.

C++์—์„œ # ๊ธฐํ˜ธ๋Š” ์ „์ฒ˜๋ฆฌ๊ธฐ ์ง€์‹œ๋ฌธ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

  • #include
    ๋‹ค๋ฅธ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ํ˜„์žฌ ํŒŒ์ผ์— ํฌํ•จ์‹œํ‚ค๋Š” ๋ฐ ์‚ฌ์šฉ
  • #define
    ๋งคํฌ๋กœ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
  • #ifdef, #ifndef, #endif
    ์กฐ๊ฑด๋ถ€ ์ปดํŒŒ์ผ์„ ์œ„ํ•ด ์‚ฌ์šฉ
  • #if, #elif, #else
    ์กฐ๊ฑด๋ถ€ ์ปดํŒŒ์ผ์˜ ๋…ผ๋ฆฌ์ ์ธ ๋ถ„๊ธฐ๋ฅผ ์ œ์–ดํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
  • #pragma
    ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ํŠน์ •ํ•œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์ง€์‹œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
  • #error
    ์ปดํŒŒ์ผ ์‹œ๊ฐ„์— ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ฐ ์‚ฌ์šฉ

๋‹ค์–‘ํ•œ ์ „์ฒ˜๋ฆฌ๊ธฐ ์ง€์‹œ๋ฌธ ์ค‘ #pragma์— ๋Œ€ํ•ด์„œ ์•Œ์•„ ๋ณด๊ฒ ๋‹ค. ๐Ÿ‘


pragma

pragma๋Š” #์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ „์ฒ˜๋ฆฌ ๊ตฌ๋ฌธ์˜ ํ•˜๋‚˜์ด๋‹ค.

์ „์ฒ˜๋ฆฌ ๊ตฌ๋ฌธ์ด๋ž€ ์‹ค์งˆ์ ์ธ ์ปดํŒŒ์ผ ์ „์— ๋ฏธ๋ฆฌ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฌธ์žฅ์ด๋‹ค.

#pragma ๋†€๋ž๊ฒŒ๋„ C ๋ฐ C++ ํ‘œ์ค€์˜ ์•„๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์ง€์›ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.


์‚ฌ์šฉ์˜ˆ์‹œ

์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ๋ช‡๊ฐ€์ง€ ์˜ˆ์‹œ๋ฅผ ๊ฐ€์ ธ์™”๋‹ค.

#pragma once

#pragma once๋Š” "1๋ฒˆ๋งŒ ์ปดํŒŒ์ผ ํ•˜๊ฒ ๋‹ค." ๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ #include๋Š” ๋ชจ๋“  ํŒŒ์ผ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
์†Œ์Šค์ฝ”๋“œ ํŒŒ์ผ๋งˆ๋‹ค ํ—ค๋”ํŒŒ์ผ์ด include๋œ๋‹ค๋ฉด ์ค‘๋ณต๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ฒ ์ฃ .
๊ทธ๋ž˜์„œ "์ค‘๋ณต ์ •์˜๋กœ ์ธํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ฒ ๋‹ค" ๋ผ๋Š” ์˜๋ฏธ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

#pragma warning(disable:4996)

error C4996 : 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

#pragma warning(disable:4996)์œผ๋กœ ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

C++์€ C์–ธ์–ด์™€ ํ˜ธํ™˜์„ฑ์„ ๊ณ ๋ คํ–ˆ์ง€๋งŒ C๋Š” C++์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ scanf()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ๋ฒ•์  ์˜ค๋ฅ˜๊ฐ€ ์—†์–ด๋„ ๋ณด์•ˆ์ •์ฑ…์— ๋”ฐ๋ฅธ ์—๋Ÿฌ์ฝ”๋“œ C4996์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋•Œ ์ „์ฒ˜๋ฆฌ ๊ตฌ๋ฌธ์„ ํ†ตํ•ด ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์‹œํ•˜๊ฒŒ ํ•ด์ค€๋‹ค๋ฉด ์ˆ˜์ • ์—†์ด ์‚ฌ์šฉ์„ ํ•  ์ˆ˜๋Š” ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ์˜ค๋ฅ˜์— ๋Œ€ํ•ด์„  ๊ฐ™์€ ๋งฅ๋ฝ์œผ๋กœ #define _CRT_SECURE_NO_WARNINGS์œผ๋กœ๋„ ๋Œ€์ฒด๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


๋งˆ๋ฌด๋ฆฌ

์ด๋ ‡๊ฒŒ ์ปดํŒŒ์ผ ์ค‘ ๋น„์ •์ƒ์ ์ธ ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด #pragma์™€ ๊ฐ™์€ ์ „์ฒ˜๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ดํ•ดํ•˜๊ณ  ์žˆ์œผ๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

profile
๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ณด์ž

0๊ฐœ์˜ ๋Œ“๊ธ€