오류, 버그, 질문 - 페이지 2641

 
bool Func()
{
   for ( int i= 1 ;;++i)
  {
     if (i== 1 )
       continue ;
     if (i== 100 )
       return false ;
  }
}

void OnStart ()
{
  Func();
}

그런 조언자가 있습니다. 오류가 발생합니다

 '}' - not all control paths return a value      Test.mq5         10        1

계속해서 주석을 달면 괜찮을 것입니다. 이거 이상하다고 생각하는건 나뿐인가?

 
traveller00 :

그런 조언자가 있습니다. 오류가 발생합니다

계속해서 주석을 달면 괜찮을 것입니다. 이거 이상하다고 생각하는건 나뿐인가?

함수가 void로 선언되지 않은 경우 값을 반환해야 합니다 .

 bool Func()
{
   for ( int i= 1 ;;++i)
  {
     if (i== 1 )
       continue ;
     if (i== 100 )
       return false ;
  }
   //---
   return ( false );
}
 
이 기능에서 벗어날 수 있는 유일한 방법은 i==100을 통하는 것입니다. 그는 왜 계속의 출현이 함수로부터의 추가적인 출구의 출현으로 이어진다고 생각합니까?
 
traveller00 :
이 기능에서 벗어날 수 있는 유일한 방법은 i==100을 통하는 것입니다. 그는 왜 계속의 출현이 함수로부터의 추가적인 출구의 출현으로 이어진다고 생각합니까?

단일 또는 다중 종료 - 중요하지 않습니다. 중요한 것은 당신이 void가 아닌 다른 유형으로 함수를 선언했다는 것입니다. 이는 함수가 반드시 값을 반환해야 함을 의미합니다.

 

함수 및 반환 값

 bool Func()
{
   for ( int i= 1 ;;++i)
  {
     if (i== 1 )
       continue ;
     if (i== 100 )
       return false ;
  }
}

이것이 기능에서 벗어날 수 있는 유일한 방법입니다. 저것들. 값을 반환해야 하는 유일한 장소입니다. 그리고 C/C++ 컴파일러는 저와 동의합니다. 그럼에도 불구하고 MQL에 이 문제에 대한 자체 표준이 있는 경우 계속이 제거되면 일반적으로 어셈블되는 이유는 무엇입니까?

 
traveller00 :

함수 및 반환 값

이것이 기능에서 벗어날 수 있는 유일한 방법입니다. 저것들. 값을 반환해야 하는 유일한 장소입니다. 그리고 C/C++ 컴파일러는 저와 동의합니다. 그럼에도 불구하고 MQL에 이 문제에 대한 자체 표준이 있는 경우 계속이 제거되면 일반적으로 어셈블되는 이유는 무엇입니까?

컴파일러는 루프가 처리되는지 여부와 코드 실행이 반환에 도달하는지 여부를 모릅니다. 그렇기 때문에 보험이 필요합니다.

 
Alexey Viktorov :

컴파일러는 루프가 처리되는지 여부와 코드 실행이 반환에 도달하는지 여부를 모릅니다. 그렇기 때문에 보험이 필요합니다.

C/C++ 컴파일러는 이것을 아주 잘 알고 있습니다. 내가 이해하는 것처럼 MQL 컴파일러는 C/C++ 컴파일러 중 하나를 기반으로 합니다. 그러나 다시 말하지만, 논리가 자체적으로 있다고 해도 계속 없이는 왜 그는 알지만 계속하면 이 지식이 사라지는가?

 
traveller00 :

C/C++ 컴파일러는 이것을 아주 잘 알고 있습니다. 내가 이해하는 것처럼 MQL 컴파일러는 C/C++ 컴파일러 중 하나를 기반으로 합니다. 그러나 다시 말하지만, 논리가 자체적으로 있다고 해도 계속 없이는 왜 그는 알지만 계속하면 이 지식이 사라지는가?

아마도 그런 코드를 언뜻보기에는 사람 만 있기 때문일 것입니다.

 bool Func()
{
   for ( int i= 1 ;;++i)
  {
     if (i== 100 )
       continue ;
     if (i== 100 )
       return false ;
  }
}
망설임 없이 무슨 일이 일어날지 이해할 수 있습니다. 제 생각에 청구는 MQL이 아니라 C 및 C++에 대한 것이어야 합니다. 이러한 임의의 잼으로부터 보호하는 것은 mql입니다.
 
traveller00 :

함수 및 반환 값

이것이 기능에서 벗어날 수 있는 유일한 방법입니다. 저것들. 값을 반환해야 하는 유일한 장소입니다. 그리고 C/C++ 컴파일러는 저와 동의합니다. 그럼에도 불구하고 MQL에 이 문제에 대한 자체 표준이 있는 경우 계속이 제거되면 일반적으로 어셈블되는 이유는 무엇입니까?

이 기능은 캔트입니다. i==100이면 동일한 i==100에 대한 다음 검사가 작동하지 않습니다. 그리고 그것은 끝없는 순환이 될 것입니다.

 
개발자 여러분, 오류 에 주의하십시오.
Обсуждение статьи "Торговый эксперт с графическим интерфейсом: Наполнение функционалом (Часть II)"
Обсуждение статьи "Торговый эксперт с графическим интерфейсом: Наполнение функционалом (Часть II)"
  • 2018.06.10
  • www.mql5.com
Опубликована статья Торговый эксперт с графическим интерфейсом: Наполнение функционалом (Часть II): Автор: Anatoli Kazharski...