=== #pragma === Each implementation of C and C++ supports some features unique to its host machine or operating system. Some programs, for instance, need to exercise precise control over the memory areas where data is placed or to control the way certain functions receive parameters. The #pragma directives offer a way for each compiler to offer machine- and operating-system-specific features while retaining overall compatibility with the C and C++ languages. Pragmas are machine- or operating-system-specific by definition, and are usually different for every compiler. -- MSDN C 와 C++ ì„ êµ¬í˜„í•œ ê°ê°ì˜ 컴파ì¼ëŸ¬ì—는 í¬íŒ…ëœ í•˜ë“œì›¨ì–´ë‚˜ OS ì— ì˜ì¡´ì ì¸ ëª‡ëª‡ê°€ì§€ë“¤ì˜ ê¸°ëŠ¥ì„ ê°€ì§€ê³ ìžˆë‹¤. ì¼ë¡€ë¡œ ëª‡ëª‡ì˜ í”„ë¡œê·¸ëž¨ë“¤ì€ ë©”ëª¨ë¦¬ì— ë°ì´í„°ê°€ ì–´ë– í•œ ë°©ì‹ìœ¼ë¡œ ìžë¦¬ìž¡ì„ 것ì¸ì§€ ì— ê´€í•œ ë¬¸ì œë‚˜ 함수가 파ë¼ë¯¸í„°ë“¤ì„ 조작하는 ë°©ë²•ë“¤ì— ëŒ€í•œ 세밀한 ì¡°ìž‘ì´ ìš”êµ¬ëœë‹¤. #pragma ì§€ì‹œì–´ë“¤ì€ C 와 C++ 언어 안ì—ì„œ ìµœì†Œí•œì˜ í˜¸í™˜ì„±ì„ ìœ ì§€ì‹œí‚¤ë©° 그러한 시스템 ì˜ì¡´ì ì¸ ëª…ë ¹ì–´ë“¤ì„ ì–¸ì–´ì˜ ê¸°ëŠ¥ìœ¼ë¡œì„œ í¬í•¨ì‹œí‚¤ëŠ” ì¼ì„ 한다. Pragma ì§€ì‹œì–´ë“¤ì€ ì¼ë°˜ì 으로 '''컴파ì¼ëŸ¬ë“¤ 마다 서로 다르다'''. ---- [snowflower]는 Accelerated C++ ì— ìžˆëŠ” mapì˜ˆì œë¥¼ Visual C++ì—ì„œ 치면서 ì—„ì²ë‚œ ì–‘ì˜ ê²½ê³ ë¥¼ 경험했다. ì´ê²ƒì„ 어떻게 í• ìˆ˜ 있ì„까 ìžë£Œë¥¼ ì°¾ë˜ ì¤‘ 다ìŒê³¼ ê°™ì€ ë°©ë²•ì„ ì°¾ì•˜ë‹¤. mapì—ì„œ 나는 ê²½ê³ ëŠ” 번호 C4786번과 C4788번(identifierê°€ 너무 길어서 나타나는 ê²½ê³ ë¼ê³ 한다) 단 2ê°œ ë¿ìž„ì„ ì•Œì•˜ê³ , ê²°êµ ì†ŒìŠ¤ì˜ ë§¨ ìœ—ì¤„ì— {{{ #pragma warning(disable: 4786 4788) }}} í•œì¤„ì„ ì¶”ê°€í•¨ìœ¼ë¡œ í•´ê²°ì„ ë´¤ë‹¤. NeoCoin ì€ Debug 모드ì—ì„œ, ê°’ì„ ì¶”ì í• ê²ƒì„ í¬ê¸°í•˜ê³ , Project Setting -> C/C++ tab -> Debug info -> Line Numbers Only ë¡œ ë†“ê³ ì“´ë‹¤. 하지만, ì´ëŸ¬í•œ ê²½ê³ ëŠ” Visual C++ 6.0 ì—서만 ìœ íš¨í•œê²ƒì´ê³ , VS.NET 부터 추가 ì„¸íŒ…ì´ í•„ìš” 없다. VC++ 6.0 ì—서는 mapì€ ë¬¼ë¡ STLPort 나, [Boost] 사용하는 ê²ƒì„ ê¶Œìž¥í•˜ì§€ 않는다. ë” ì´ìƒ MS ì¸¡ì˜ ì»´íŒŒì¼ëŸ¬ ê¸°ìˆ ì§€ì›ì´ 없으므로, VS.NET ì´ìƒ ë²„ì „ì„ ì‚¬ìš©í•´ì•¼ 한다. ---- ë¿ë§Œ ì•„ë‹ˆë¼ libì˜ ì¶”ê°€ë“±ì´ë¼ë˜ì§€ ì´ íŒŒì¼ì´ 단 한번만 열리게 í• ìˆ˜ë„ ìžˆë‹¤. {{{ #pragma comment(lib, "d3dx9") // dx9.lib 파ì¼ì„ ë§í¬ì‹œ í¬í•¨í•œë‹¤. #pragma once // ì´ íŒŒì¼ì€ 한번만 열리게 한다. }}} ---- 혹시ë¼ë„.. ì € #pragma warning(disable: n ... m) ì„ ì¨ì„œ ì–¸ì œë‚˜ ë¬¸ì œë¥¼ í•´ê²° í• ìˆ˜ 있ì„ê±°ë¼ê³ ìƒê°í•˜ì‹œë©´ 안ë©ë‹ˆë‹¤. ì € ìœ„ì˜ ì„¤ëª…ì—ë„ ì”Œì—¬ìžˆë“¯ì´, pragma directive 는 지극히.. ì‹œìŠ¤í…œì— ì˜ì¡´ì 입니다. 그러므로, VC ì—서는 먹힌다는 ì € ëª…ë ¹ì–´ê°€ GCC ì—서는 안ë ìˆ˜ë„ ìžˆê³ .. ë 그런ê²ë‹ˆë‹¤. 확실하게 ì“°ê³ ì‹¶ìœ¼ì‹œë‹¤ë©´.. ê·¸ 컴파ì¼ëŸ¬ì˜ 문서를 ì°¸ì¡°í•˜ëŠ”ê²ƒì´ ë„움ë ê²ë‹ˆë‹¤. 표준으로 ì •í•´ì§„ ëª‡ëª‡ì˜ pragma directive ê°€ ìžˆë‹¤ê³ ì•Œê³ ìžˆëŠ”ë°.. ê·¸ê²ƒë“¤ì„ ë‚´í‚¤ë©´ ì •ë¦¬í•´ì„œ ì˜¬ë ¤ë³´ê² ìŠµë‹ˆë‹¤. ---- [ë„구분류]