2009-10-26 3 views
4

여기에 형식 지정자가 필요합니까?const에 형식 지정자가 필요합니까?

const c = 7; 

비얀 스트로브 스트 룹의 '는 C++ 프로그래밍 언어'80 페이지에이 불법이라고 말한다. 그러나, 나는 어떤 brainbench 테스트를 연습 해왔고, 질문 중 하나는 유형이 int로 기본 설정되어 있음을 나타냅니다. 브레인 벤치 (Brainbench)는 대개 정확하기 때문에 어느 참조가 옳은지 확신 할 수 없으며 표준에서 아무것도 찾을 수 없었습니다. 누구든지 명확한 답변과 참조를 가지고 있습니까?

답변

14

int의 기본 유형은 C에서는 유효하지만 C++에서는 유효하지 않습니다. C 에서조차도 이러한 코딩 스타일은 피해야합니다. Bjarne Stroustrup의 책은 표준 C++에 대한 가장 권위있는 참조 중 하나입니다.

+4

물론 가장 권위있는 표준 자체가 부족합니다. – MSalters

+0

@MSalters 동의. 이를 반영하도록 게시물을 수정했습니다. –

+0

그것은이는 C + +0 (안) 표준 타입 추론을 향해 이동하고 주어진 법적 코드가 아닙니다 부끄러운 것 같다 자동 X = 7; // x는 typeof (7)에서 int로 추정됩니다. Bjarne의 FAQ에 대한 자세한 정보 : http://www.research.att.com/~bs/C++0xFAQ.html#auto – JBRWilkinson

2

나는 표준에 말할 수 없다. .. 단지 const c = 7;와 같은 성명을 보는 것은 나에게 나쁜 코드 스타일을 외친다. 컴파일러와의 호환성에 관해서는 아마도 히트 앤 미스가 될 것입니다. Microsoft Visual Studio의 컴파일러는 C++ 파일 (.cpp 확장자)을 컴파일 할 때 그 일부를 가지지 않지만 C 파일 (.c 확장자)을 컴파일 할 때 주로 C 표준에서 기본값 변수 인 int 유형이 지정되지 않은 경우.

+1

불행히도 이러한 유형의 테스트는 코드를 작성하는 경우에 결코 의지하지 않을 사실 인 매우 밀교적인 것을 요구합니다 (이해한다면, 다음 사람은 거의 확실하지 않습니다!). – Taras

3

C++의 경우 Stroustrup은 표준이 아닌 모든 곳에서 믿을 것입니다.

아마도 C에 대한 질문은 C++이 아니 었나요?

섹션 7.1.6에서 draft C++0x standard 말한다는 생성자가 선언하지 않는 한 CV-QUALI 파이 어이 선언에 필요하지

적어도 하나의 타입 구체적인 어, 소멸자 또는 변환 function.83 type-spec-seq은 별칭 선언 (7.1.3)의 type-id에 이 나타나지 않는 한 클래스 또는 열거 형을 정의해서는 안된다.

관련 문제