디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

Ada 프로그래밍: 3.6 프라그마 (pragma)

나르시갤로그로 이동합니다. 2025.10.28 02:07:02
조회 60 추천 0 댓글 0

3.6 프라그마 (pragma)

프라그마(pragma)는 Ada 언어의 표준 구문의 일부로서, 컴파일러에게 특정 지시 사항이나 정보를 전달하는 컴파일러 지시문(compiler directive)입니다.

프라그마는 프로그램의 실행 로직을 직접 구성하지는 않지만, 컴파일러의 최적화 방식, 런타임 검사 수행 여부, 외부 언어와의 연동 방식, 또는 경고 메시지 표시 여부 등 컴파일 및 실행 환경의 다양한 측면을 제어합니다.

기본 문법

프라그마는 pragma 예약어로 시작하며, 프라그마 식별자와 선택적인 인수(argument) 목록으로 구성됩니다.

pragma 식별자 [(인수, ...)];

프라그마는 선언부(declarative part) 내, 라이브러리 유닛(library unit)의 시작 부분, 또는 특정 선언(declaration) 바로 뒤 등 문법적으로 허용된 위치에 배치되어 해당 위치부터 유효합니다.

컴파일러는 자신이 인식하는 프라그마만 처리하며, 인식하지 못하는 프라그마는 무시합니다. 프라그마는 두 종류로 나뉩니다.

  1. 언어 정의 프라그마: assert, suppress 등 Ada 언어 표준 자체에 정의된 프라그마입니다.
  2. 구현 정의 프라그마: GNAT 컴파일러의 warningsstyle_checks 와 같이 특정 컴파일러(구현)에서만 제공하는 프라그마입니다. GNAT 컴파일러가 제공하는 구현 정의 프라그마의 전체 목록 및 설명은 GNAT 참조 매뉴얼1에서 확인할 수 있습니다.

이 책에서는 assert (12.7.1절), suppress (12.8.1절) 등 특정 기능과 연관된 프라그마는 해당 기능이 설명되는 장에서 설명합니다.

본 절에서는 코드의 컴파일 환경을 제어하는 GNAT 컴파일러의 구현 정의 프라그마 몇 가지를 소개합니다.

3.6.1 언어 버전 명시 (pragma ada_2012)

pragma ada_2012 계열의 프라그마는 컴파일러에게 해당 소스 코드가 어떤 Ada 표준 버전을 준수하는지 명시합니다.

-- 이 파일이 ada 2012 표준을 준수함을 명시합니다.
pragma ada_2012;

3.6.2 경고 메시지 제어 (pragma warnings)

pragma warnings는 GNAT 컴파일러가 생성하는 특정 경고 메시지를 비활성화(off)하거나 활성화(on)하는 데 사용됩니다. 이 프라그마는 경고를 발생시키는 코드 영역에서 적용할 수 있습니다.

pragma warnings는 모든 경고를 일괄 제어하거나, 특정 경고 플래그 또는 경고 메시지 텍스트 패턴을 지정하여 제어할 수 있습니다.

경고 제어의 특징

  1. 플래그 제어: 경고 플래그 문자열(예: "-gnatwu")을 사용하여 특정 카테고리의 경고를 켜거나 끌 수 있습니다.

```ada -- 이 지점부터 사용되지 않는 엔티티에 대한 -- GNAT 경고(-gnatwu)를 비활성화합니다. pragma warnings (off, "-gnatwu");

my_unused_variable : Integer; -- 이 선언은 -gnatwu 플래그에 의해 경고가 억제됩니다. ```

메시지 패턴 제어: 경고 메시지 텍스트와 일치하는 패턴(와일드카드 * 사용 가능)을 사용하여 개별 경고를 억제할 수 있습니다.유효 범위: pragma warnings (off, ...)의 효력은 해당 프라그마가 위치한 지점부터 시작됩니다. 경고를 다시 활성화하는 pragma warnings (on, ...)이 뒤따르지 않으면, 해당 경고 억제는 현재 컴파일 단위의 끝까지 지속됩니다. 이 프라그마는 선언적 범위를 벗어나도 자동으로 효력이 종료되지 않습니다.

ada -- 해당 경고를 다시 활성화합니다. pragma warnings (on, "-gnatwu");

3.6.3 스타일 검사 제어 (pragma style_checks)

pragma style_checks는 GNAT 컴파일러의 코딩 스타일 검사 기능을 비활성화(off)하거나 활성화(on)하는 데 사용됩니다. 자동 생성된 코드 영역이나 특정 스타일 가이드를 적용하는 코드 영역에서 스타일 경고를 억제할 때 활용할 수 있습니다. 또한 프로젝트별 코딩 규칙을 코드에 적용하거나 자동 생성된 코드 영역에서 스타일 경고를 억제하는 목적으로 사용할 수 있습니다.

-- 이 지점부터 스타일 검사를 비활성화합니다.
pragma style_checks (off);


  1. https://gcc.gnu.org/onlinedocs/gnat_rm/Implementation-Defined-Pragmas.html 

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 영포티룩도 멋지게 소화할 것 같은 40대 스타는? 운영자 25/10/27 - -
AD 할로윈 슈퍼위크~!! 운영자 25/10/23 - -
2899164 갑갑하다 ㅆㅇㅆ야 [5] 에이도비갤로그로 이동합니다. 10.28 93 0
2899163 핵은 핵이고 인간관계. 다 혐오병아니겠뇽. 넥도리아(211.201) 10.28 27 0
2899162 나는 요. 정은이 마음 믿는다. 넥도리아(211.201) 10.28 37 0
2899161 오늘도 책한권뗐다 [4] ㅆㅇㅆ(124.216) 10.28 70 0
2899160 지금까지 만든거 재현갤로그로 이동합니다. 10.28 27 0
2899159 카카오톡 리밴스드 어캐한거임?? [7] chironpractor갤로그로 이동합니다. 10.28 104 0
2899158 흠.. 담달은 뛰뛰 시간 잘 안나겠넹 [3] ♥벼락부자냥덩♥갤로그로 이동합니다. 10.28 46 0
2899157 개발자 취업할곳없냐 프갤러(39.117) 10.28 52 0
2899156 [플렉스튜디오/영림원소프트랩/멋쟁이사자처럼] 2025 로우코드 개발 공모 프갤러(14.32) 10.28 35 0
2899154 점심 발명도둑잡기(118.235) 10.28 29 0
2899153 실컷 webrtc 공부하고 나니 내게 필요한건 webrtc가 아니었다. 프갤러(218.154) 10.28 35 0
2899152 의외로 게시판 만들려면 알아야하는게 많음 [2] 프갤러(218.154) 10.28 59 0
2899151 컴공 나왔는데 게시판 못만드는 애들 있음? [2] 프갤러(117.111) 10.28 73 0
2899149 수술... 허리 up 아니고 , no name 넥도리아(211.201) 10.28 40 0
2899147 다음 ada 플밍에는 asm 인테페이스 다뤄야겠어 ㅋㅋ 나르시갤로그로 이동합니다. 10.28 25 0
2899146 뉴스 헤드라인 읽어서 관련 종목 추리고 나르시갤로그로 이동합니다. 10.28 24 0
2899145 좋은 주제 찾있다 [2] 프갤러(218.154) 10.28 64 0
2899144 폐기물 괸련 종목들 나르시갤로그로 이동합니다. 10.28 45 0
2899142 저능아가 개발문서 보면 하루아침에 전문가 되는거냐 그럼? [2] ㅇㅇ(118.235) 10.28 81 3
2899141 "개발 문서 보는것도 전문가지 병신아" [1] ㅇㅇ(118.235) 10.28 82 4
2899140 ㅆㅇㅆ 저 병신은 지가 그렇게 잘났으면 [2] ㅇㅇ(118.235) 10.28 83 2
2899139 하~ 이씨발년 [8] 개멍청한유라갤로그로 이동합니다. 10.28 113 0
2899138 openai알트먼 진성홍어임 타이밍뒷.통수한방(1.213) 10.28 28 0
2899137 나 애플디벨로퍼아카데미 4긴데 프갤러(121.151) 10.28 45 0
2899136 최근 일본의 우타이테 프로그램 수준 프로외노자갤로그로 이동합니다. 10.28 39 0
2899135 학생인데 진로 어케 잡아야되나요..? [2] 프갤러(121.133) 10.28 56 0
2899134 자러감..ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 10.28 34 0
2899132 미리 알려드릴께요. 아하 운영진께 지식인 서비스 오늘 내일 수술인데 넥도리아(220.74) 10.28 37 0
2899131 군상(群像)의 일부..ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 10.28 38 0
2899130 태연 ㅇㅅㅇ 잘못 올렸네.. 다시 올린다.. ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 10.28 53 0
2899129 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 10.28 56 0
2899126 childhood and manhood 배구공(119.202) 10.28 43 0
2899082 어셈블리 코드를 C 언어로 변환해주는 사이트가 있었던 것 같은데 아는 람 ㅇㅇ(115.23) 10.28 65 0
Ada 프로그래밍: 3.6 프라그마 (pragma) 나르시갤로그로 이동합니다. 10.28 60 0
2899074 거지 같은 면접 과제? 코테? 10시간 걸려 다 함.. ㅇㅇ갤로그로 이동합니다. 10.28 66 0
2899065 나는 모든사람이 나처럼 10년이상 대학병원을 다녔으면 좋겠음 타이밍뒷.통수한방(1.213) 10.28 56 0
2899052 나도 오늘은 외주가 있어서 밥벌이했는데 [2] ㅆㅇㅆ(124.216) 10.28 107 0
2899044 이런 잠시 잊고 있었군. 인류 지성의 발전이 곧 개개인의 사명. [3] 프갤러(110.8) 10.28 73 0
2899043 나도 돈많이 벌어서 내 LLM 만들고 싶어 나 LLM 만들 수 있을거같다 [1] ㅆㅇㅆ(124.216) 10.28 83 0
2899037 여자배구 마이너갤러리 매니저 해임요청 ㅇㅇ(211.235) 10.28 36 0
2899029 여자 버튜버들 구독자 1만도 힘든거같은데 [4] 헬마스터갤로그로 이동합니다. 10.28 85 0
2899020 내 인생 경험상 무조건 기업 기반이나 재단 기반이 있어야함 [12] ㅆㅇㅆ(124.216) 10.27 128 0
2899010 나는 코딩에 재능은 없지만 코딩은 좋아함 [4] ㅆㅇㅆ(124.216) 10.27 115 0
2899005 명상 하다보니 러스트 프로그래밍보다 인생이란 뭘까 [5] 프갤러(110.8) 10.27 95 0
2899004 나는 모든인간들이 나처럼 인생살았으면 좋겠음 [1] 타이밍뒷.통수한방(1.213) 10.27 66 0
2899003 명상 하다가 현타왔다. [2] 프갤러(110.8) 10.27 65 0
2898996 국정원에서 뭐할라하나? 개발자를뽑네 [4] ㅇㅇ(220.86) 10.27 111 0
2898992 옛날엔 채널 50개도 안되도 볼거 많았는데 타이밍뒷.통수한방(1.213) 10.27 34 0
2898991 쿠팡 존나게 뛰고 업소 가서 돈 다쓴 썰.. ㅇㅇ(118.235) 10.27 39 0
2898988 메모리 페이지 기본값 4KB가 만국 표준 아님? [3] 프갤러(49.165) 10.27 62 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2