변수를 선언했지만 나중에 프로그램에서 사용하지 않으면 컴파일러에서 경고 메시지를 표시하고 "모든 경고를 무시해서는 안됩니다." 경고는 거기 있니? 어떻게 오류가 발생할 수 있습니까? 감사!변수가 선언되었지만 사용되지 않으면 오류가 발생할 수 있습니까?
답변
처음에는 사용되지 않는 변수 선언은 메모리 낭비이므로 버그 자체입니다.
둘째, 더 중요한 것은 다음과 같이 사용하지 않은 변수에 대한 선언을 작성하는 것입니다. 변수를 사용할 계획이 없다면 변수 선언을 귀찮게하지 않았으므로 을 잊어 버렸으므로을 사용하는 것이 좋습니다. 그 자리에 잘못된 변수 이름을 입력 할 수 있습니까? 그 변수에 저장할 결과가있는 중요한 계산을 수행하는 것을 잊었을 가능성이 있습니까? 물론
, 당신은 단지 그것이 경고 아닌 오류의 이유는, 당신이 필요로하지 않는 결국 뭔가를 선언 한 수도 있지만, 그 경고가 중요한 부분에 당신을 가리킬 수있는이 상황을 쉽게 알 수 누락 된 코드는 실제로 버그가 될 수 있습니다.
대부분의 컴파일러는 최적화 할 수없는 ctor 및 dctor가있는 객체가 아니라면 첫 번째 점은 중요하지 않습니다. – strager
그리고 만약 생성자와 소멸자가 최적화되어 있지 않다면, 객체가 사용되지 않는다고 말하는 것은 정확하지 않습니다. (그리고 컴파일러가 경고를 주면 컴파일러의 버그입니다.) –
@Kennedy, 나는 동의하지 않는다. 프로그래머가 변수를 사용하고 있지 않지만 객체가 여전히 인스턴스화되어 있습니다. 경고는 객체가 사용되지 않고 인스턴스화되는 객체에 관한 것이지 아무것도 수행하지 않는 변수에 관한 것이 아닙니다. – strager
버그가 있음을 나타낼 수 있습니다. 선언되었지만 사용되지 않은 변수는 분명히 프로그래밍 오류입니다. 그 이유는 무엇입니까?
아마도 변수를 사용하려고했기 때문입니다. 일반적으로 변수를 선언하고 사용하지 마십시오.
이것은 유용한 경고이며 대부분의 언어로 존재합니다.
나는 "당신은 일반적으로 변수를 선언하지 않고 * 사용하지 않는다"고 생각한다. –
어, 고마워, 고정 :) –
그것은 발생하지 않습니다
는 그것은 당신이 실수로 대신 당신이 의미하는 하나의 또 다른 변수를 사용 오타를 감지에 도움이 될 수,이 경고는 사용하지 않은 사람 : 당신을 생각 나게합니다 오류. 변수가 아무 것도하지 않기 때문에 (보통 컴파일러의 상위 레벨에서만 경고가 발생합니다.) 변수를 사용하려고했으나 사용하지 않았 음을 나타낼 수 있습니다. 경우에 따라 코드가 올바르게 작동하지 않을 수도 있습니다.
컴파일러가 여러분에게 약간 이상한 짓을했음을 경고하려고 시도한 것처럼 코드가 실패 할 수있는 것은 아닙니다.
컴파일러 오류를 일으키지 않는다. 모든 경고를 오류로 보았습니다.)하지만 OP가 왜 * 프로그래밍 오류 *로 간주 될 수 있는지 궁금해했기 때문에 컴파일러는 그러한 변수에 대한 경고를 내 보냅니다. –
네, 저도 그 사실을 설명하려고 노력 했었습니다.하지만 원래의 질문을 명확히하지 않았습니다. 그래서 나는 둘 다 목표로 삼을 거라고 생각했습니다. – Peter
네, 모든 경고가 어떤 경우에는 오류로 끝날 것이라고 생각했지만,이 경우에는 어떻게 될 수 있는지 몰랐습니다. 이제 나는 그것에 대해 분명하다, 너희들 모두에게 감사하라! – zjsworm
이와 비슷한 사항에 대해 묻고 있습니까?
int function() {
double x;
return 42;
}
잘, 그것은 사용하지 않는입니다 때문에 변수 x
가 사용되지라는 경고가있다. 변수가 사용되지 않으면 아무것도 수행하지 않기 때문에 경고입니다.
변수를 잘못 입력하거나 실수로 섀도 잉 한 경우이 경고 메시지가 나타날 수 있습니다. 예를 들어 대신 42 열 번 인쇄
는void printArgument10Times(int i) {
for(int i = 0; i < 10; ++i) {
std::cout << i << std::endl;
}
}
// ...
printArgument10Times(42);
, 그것은 0에서 9 i
는 그림자도되지 않는이었다 인쇄합니다. 컴파일러는 두 가지 모두를 알려줄 것입니다.
* C++에서는 생성자와 deconstructor가 호출됩니다.
- 1. 변수 'x'가 선언되었지만 결코 오류가 사용되지 않았습니다.
- 2. 변수가 선언되었지만 디버그 C#을 디버그의
- 3. 불필요하게 헤더 파일을 포함하면 GCC에 오류가 발생할 수 있습니까?
- 4. 어떻게 매개 변수가 activerecord where 절에 전달되어 테이블 별칭 오류가 발생할 수 있습니까?
- 5. Resharper 로컬 변수가 사용되지 않습니다
- 6. ASP.Net 페이지 내에 404 오류가 발생할 수 있습니까?
- 7. NSURLConnection을 사용할 때 어떻게 오류가 발생할 수 있습니까?
- 8. C 소스 코드를 반복하여 컴파일 오류가 발생할 수 있습니까?
- 9. .net mvc routing으로 인해 JavaScript 오류가 발생할 수 있습니까?
- 10. 이 코드로 인해 "500"내부 서버 오류가 발생할 수 있습니까?
- 11. sproc과 호출 코드의 불일치로 인해 빌드 오류가 발생할 수 있습니까?
- 12. 서명되지 않은 컨테이너에 음수를 할당하려고하면 컴파일 오류가 발생할 수 있습니까?
- 13. 포인터를 놓으면 변수가 사용되지 않아도 프로그램이 중단됩니다.
- 14. .NET의 스택에서 메모리 누수가 발생할 수 있습니까?
- 15. C# - 여기서 오버플로 검사가 발생할 수 있습니까?
- 16. QueryString id 매개 변수가 사용되지 않습니다.
- 17. Erlang 변수가 사용되지 않는 이유는 무엇입니까?
- 18. 엔티티 프레임 워크 : 내 오브젝트 컨텍스트를 폐기하지 않으면 어떤 부작용이 발생할 수 있습니까?
- 19. PHP mysql 클라이언트가 mysql 서버 버전과 일치하지 않으면 어떤 문제가 발생할 수 있습니까?
- 20. 여러 동일한 GUID가 발생할 수 있습니까?
- 21. 프로그램 카운터에 잘못된 주소가 발생할 수 있습니까?
- 22. UIWindow # addSubview로 메모리 누수가 발생할 수 있습니까?
- 23. 어떻게 이런 일이 발생할 수 있습니까?
- 24. 스마트 포인터로 슬라이스가 발생할 수 있습니까?
- 25. 데이터 캐싱으로 인해 간섭이 발생할 수 있습니까?
- 26. SynchronizationContext.Post 또는 .Send로 예외가 발생할 수 있습니까?
- 27. 인터페이스를 구현할 때 "구체적인 방법을 재정의하지 마십시오 ..."컴파일 시간 오류가 발생할 수 있습니까?
- 28. 누군가이 치명적인 오류가 발생할 수있는 원인을 알고 있습니까?
- 29. 불량 디자인? 패키지에 오류가 발생할 수있는 클래스
- 30. NSAffineTransforms가 사용되지 않고 있습니까?
Sinan : 자신의 게시물을 편집 할 수있는 능력이있어 약간의 언어 오타에 대해 너무 걱정하지 않아도됩니다 :) –
"c/C++"를 입력하고 맞춤법을 잘못 입력하려고합니다 – zjsworm
Sinan : 당연히, 그러나 그 때 나는 오식에 관하여 적은 코멘트가 필요하지 않다는 것을 생각한다 :) –