가장 엄격한 C 코드를 위한 GCC 옵션?
GCC를 최대한 엄격하게 하려면 어떤 GCC 옵션을 설정해야 합니까?(그리고 저는 가능한 한 엄격하다는 것을 의미합니다.) 저는 C89로 글을 쓰고 있고 제 코드가 ANSI/ISO 규정을 준수하기를 원합니다.
다음을 사용할 것을 권장합니다.
-Wall -Wextra -std=c89 -pedantic -Wmissing-prototypes -Wstrict-prototypes \
-Wold-style-definition
다음과 함께 컴파일해야 합니다.-O
게다가-g
일부 경고는 옵티마이저를 사용할 때만 사용할 수 있기 때문에 (실제로, 저는 주로-O3
문제를 발견하기 위해서).당신은 더 좋아할지도 모릅니다.-std=gnu89
라이브러리에서 더 적은 확장 기능을 사용할 수 없게 됩니다.OTOH, 엄격한 ANSI C89로 코딩을 하고 있다면, 아마 당신은 그들이 비활성화되기를 원할 것입니다.-ansi
옵션은 다음과 같습니다.-std=c89
명시적이거나 유연하지는 않습니다.
누락된 프로토타입은 범위 내 프로토타입이 없는 사용(또는 외부 기능 정의) 기능에 대해 경고합니다.엄격한 프로토타입은 함수 선언 또는 정의(또는 함수 포인터)에 '빈 괄호'를 사용할 수 없음을 의미하며, 다음 중 하나가 필요합니다.(void)
또는 올바른 인수 목록을 선택합니다.기존 스타일 정의에서는 다음과 같은 K&R 스타일 함수 정의를 찾을 수 있습니다.
int old_style(a, b) int a; double b; { ... }
운이 좋다면 그런 걱정은 하지 않아도 될 겁니다.저는 직장에서 그다지 운이 좋지 않고, 엄격한 프로토타입을 사용할 수도 없습니다. 왜냐하면 주변에 엉성한 기능 포인터들이 너무 많기 때문입니다.
참고 항목:코드를 정리하는 가장 좋은 명령줄 도구는 무엇입니까?
이 옵션들은 꽤 좋습니다.
-Wall -Wextra -ansi -pedantic
해당 조합에서 누락되는 추가 경고가 있는지 확인하려면 설명서를 읽어봐야 합니다.
당신은 엄격한 C89에 대한 지원이 포함되어 있지 않다는 것을 주의해야 합니다.//
스타일 주석, 그리고 외부 연관성이 있는 객체의 이름에 중요한 문자의 수에 약간의 심각한 제한이 있습니다.
언급URL : https://stackoverflow.com/questions/8946797/gcc-options-for-strictest-c-code
'prosource' 카테고리의 다른 글
C:\wamp\apps\phpmyadmin4.1.14에서 최대 실행 시간 360초를 초과했습니다. (0) | 2023.10.15 |
---|---|
SSL 오류: npm 명령을 사용하는 동안 CERT_UNTRUSTED (0) | 2023.10.15 |
*ngFor를 사용하여 개체 키를 반복하는 방법 (0) | 2023.10.15 |
렌더링 차단 자바스크립트를 제거하는 방법 (0) | 2023.10.15 |
C - calloc() v. malloc() (0) | 2023.10.15 |