친구가 보낸 코드를보고 있었는데 그는 "컴파일했지만 작동하지 않습니다."라고 말했습니다.괄호없이 함수를 사용할 때 C++ 컴파일러가 불평하지 않는 이유는 무엇입니까?
void foo(){
cout<< "Hello world\n";
}
int main(){
foo; //function without parentheses
return 0;
}
가 첫 번째 I는 "괄호를 사용, 당신은해야한다"라고 말했다 : 나는 그가, 괄호없이 이런 일을 기능을 사용하는 것을 보았다. 그런 다음 코드를 테스트했습니다. 컴파일되지만 실행되지 않습니다 ("Hello world"가 표시되지 않음).
그럼 컴파일러가 전혀 컴파일되지 않습니다 (GCC 4.7).하지만 작동하지 않습니다.
실제로 작동하지 않습니다. 'foo'는 그대로 함수 포인터입니다. 'foo;'행은 아무 효과가없는 행입니다. 경고를 최대치로 설정하면 효력이없는 성명에 대한 경고를 받아야합니다. – RedX
* "경고 : 문은 'foo'"* 및 * "warning : 문이 아무런 영향을 미치지 않습니다."를 호출하기 위해 호출이 아닌 참조입니다. -Wall -Wextra – Flexo
으로 컴파일하고 싶을 것이다. (장래의 질문을 위해 샘플을 완성하기 위해'#include'과 네임 스페이스에 넣을 가치가있다.) –
Flexo