일부 코드 샘플을 읽었으며 const int를 반환했습니다. 예제 코드를 컴파일하려고 할 때 충돌하는 반환 유형에 관한 오류가 발생했습니다. 그래서 const가 문제라고 생각하면서 검색을 시작했습니다. 코드를 제거하면 코드가 제대로 작동하고 컴파일되었을뿐만 아니라 예상대로 작동했습니다. 하지만 const 반환 형식에 관련된 정보를 찾을 수 없었습니다 (구조체/매개 변수/등등에 대해서만했지만 반환 형식에는 해당하지 않았습니다). 그래서 const가 무엇을 할 수 있는지 보여주기 위해 코드를 작성하려고했습니다.C에서의 Const 반환 유형
#include <stdio.h>
int main() {
printf("%i", method());
}
const int method() {
return 5;
}
그리고 나는이를 컴파일 할 때, 내가 얻을 : 나는 const를 제거 할 때마다
$ gcc first.c
first.c:7: error: conflicting types for ‘method’
first.c:4: note: previous implicit declaration of ‘method’ was here
그러나, 그것은 예상대로, 단순히 5 밖으로 인쇄하는 계속을 나는이 함께했다 인생과 함께. 그래서, 반환 유형으로 사용될 때 const가 무엇을 의미한다고 가정 할 수 있습니까? 고맙습니다.
이 예제에서는 문제가 다르다. 선언되기 전에'method()'를 사용하므로 암시 적으로'int'를 반환한다고 가정합니다. 이 데이트 된 행동에 의존하는 것은 다소 나쁜 생각입니다. 예제를 변경하여'method()'를 선언하여 'const int'를 반환하여 더 대표적으로 만드십시오. 다시 말해서, 여러분이 여기있는 것은'const'와'nonconst' 타입 사이의 표준적인 충돌이며,'const' 타입이 함수에 의해 리턴 된 타입이라는 사실은 부적합합니다. –
gcc에 -ansi-pedantic 옵션이 있습니까? 새 코드에서는 필수 요소 여야합니다. –
Meta-pedantic :'-ansi'와'-pedantic'은 별도의 옵션입니다. – dirkgently