prosource

가장 엄격한 C 코드를 위한 GCC 옵션?

probook 2023. 10. 15. 17:29
반응형

가장 엄격한 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

반응형