전역 변수가 gcc로 초기화되지 않았다는 것을 알 수있는/경고할만한 방법이 있습니까?gcc, 초기화되지 않은 전역 변수
나는 원자/지역 변수를 가지고 "-Wuninitialized"
전역 변수가 gcc로 초기화되지 않았다는 것을 알 수있는/경고할만한 방법이 있습니까?gcc, 초기화되지 않은 전역 변수
나는 원자/지역 변수를 가지고 "-Wuninitialized"
안돼!
코드에서 C 표준에 명시된대로 코드를 명시 적으로 수행하지 않으면 전역 변수와 정적 변수가 암시 적으로 초기화됩니다.
요약하면 전역 변수와 정적 변수는 초기화되지 않은 상태로 남지 않습니다.
아니요. gcc가 자동으로 모든 전역 변수와 정적 변수를 "0"으로 초기화하기 때문입니다.
6.9.2 외부 개체 정의 객체 식별자 선언이 파일 범위 및 초기화가 있으면
의미론
1 상기 선언은 외부 식별자에 대한 정의. 스토리지 클래스 지정없이 또는 정적 스토리지 클래스 지정자
2 이니셜 라이저없이 범위 파일이있는 오브젝트의 식별자의 선언하고 는 임시 정의를 구성한다. 번역 단위에 식별자에 대한 하나 이상의 임시 정의가 포함되어 있고 번역 단위에 해당 식별자에 대한 외부 정의가없는 경우 번역 단위에 정확히 식별자의 파일 범위 선언이 포함되어있는 것처럼 동작합니다. 0
(표준)에서 상기 두 개의 절 그 파일 범위를 보장하는 이니셜 라이저 동일 으로 변환 부 월말 복합 타입은 전역 오브젝트는 항상 초기화된다.
기본적으로 예입니다. 나는 그것들을 명시 적으로 초기화하기를 원한다. 어떤 정적 분석기도 괜찮을 것입니다. – Kamath
@AUZKamath : 아니오. 표준에서 이미 전역 변수를 기본값으로 초기화해야하므로 gcc는 초기화되지 않은 전역 변수에 대한 경고 또는 진단을 제공하지 않습니다. –