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

 
speedy :

컴파일 버튼이 영원히 사라집니다(돌아가려면 편집기를 다시 시작해야 함)

글쎄, 실제로는 .. :) 나는 그럭저럭 돌아갈 수 있었다 :)

이렇게 하려면 재귀 부분을 주석 처리하고 디버그 컴파일 버튼을 클릭해야 합니다.

 
speedy :

1. 기본이 아닌 내부 클래스 요소를 외부에 "노출"합니다(이 예에서는 속성 자체가 아니라 배열 요소 만 !). 특히 값을 변경할 수 있는 기능은 안전하지 않습니다.

2. 또한 이것은 객체 지향 프로그래밍의 "정신"과 모순됩니다. 객체 데이터에 대한 모든 작업은 자체 메서드를 사용하여 객체 내부에서 수행되어야 합니다.

3. 데이터 속성에 Setter를 사용하는 것은 어떻습니까?

4. 코드는 가독성의 이점만 얻을 수 있습니다.

5. 궁극적으로, l-value 인덱서의 이 "단순함"은 당신을 포함하여 아무도 이 코드가 어떻게 작동하는지 이해하지 못하게 할 것입니다.

6. Setter를 작성하는 것보다 버그를 찾는 데 더 많은 시간을 할애하십시오.

이게 뭐야, 블랙 유머?

1. 죄송합니다. - 말도 안되는 소리입니다. 편집증이 여기에서 유행하고 있으며 "이것을 하지 않는 이유"에 대한 지렛대 논쟁이라는 것을 이해합니다. 나는 어떤 위험도 보이지 않는다. 있다면 유심히 살펴보았다. 모든 이름은 궁극적으로 링크입니다. 인덱싱은 이름 개념의 일반적인 확장입니다. 더 이상은 없어. 할당을 전면 금지합시다. 보안을 위해. 링크는 매우 위험하지 않습니까?

2. 이러한 논리를 가진 객체 지향 프로그래밍의 정신은 인덱서가 오른쪽과 왼쪽 모두에서 완벽하게 잘 작동하는 수십 개의 덜 인기 있는 언어인 C ++, C #, Delphi와 격렬하게 모순됩니다. 그리고 어떤 이유로 이것은 상식과 내 정신에 모순되지 않습니다.

인덱서는 외부 환경과 통신하도록 만들어졌습니다. 그들의 기능은 단지 인터페이스입니다. 무엇이든 캡슐화하고 숨길 수 있지만 객체를 배열로 처리하려면 인덱스가 필요합니다. 사실 모든 배열은 어떻게든 배열되어 있습니다. 예를 들어, 일반 동적 배열 mql. 할당 연산자의 왼쪽에 그들을 금지할 수 있습니까? SetArrayValue(array, i, j, value); 유형의 함수로 교체해 보겠습니다. 동시에 우리는 가독성에서 승리할 것입니다. 예, 디버깅이 훨씬 쉬울 것입니다. ㅋㅋㅋ 휴..

3. 일반 인덱서를 만드는 것은 어떻습니까? 하녀는 확실히 멋지지만 여왕은 여전히 더 좋습니다.

4. 여기 내 지붕이 특별히 움직이기 시작했습니다. 읽을 수 없는건가요??

  t[i]=i*i;

이게 더 가독성이 좋죠?

  t.setDataElement(i, i*i);

시원한. 아마도 치료를 받으러 갈 것입니다.

5. 드디어 멋있다.

6. 나는 울었다.


 

630 빌드에서 표시기가 컴파일을 중지했습니다.

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
{
 //код
 for ( int i=limit; i<rates_total && ! IsStopped (); i++)
  {
   if ()
    {
     //~400 стр. кода
     // i используется много раз
     // тут же определяется RT=true или false
    }
   if (RT)
    {
     double p=close[i];   // 'i' - undeclared identifier
    }
  }
 return (rates_total);   // 'rates_total' - undeclared identifier
}

c i 선언이 for 전에 배치되면 오류를 제거할 수 있습니다.

 int i;
for (i=limit; i<rates_total && ! IsStopped (); i++)
{

}

'rates_total' - 선언되지 않은 식별자는 어떻습니까?

Win7 x64 및 XP x32에서도 동일합니다.

 

말해 주세요. MathMin () 및 MathMax ()는 함수(스택에 전달되는 매개변수 포함) 또는 매크로 대체( 인라인 )로 구현됩니까? 참고서로 판단하면 이것들은 기능 입니다.

Документация по MQL5: Основы языка / Функции / Передача параметров
Документация по MQL5: Основы языка / Функции / Передача параметров
  • www.mql5.com
Основы языка / Функции / Передача параметров - Документация по MQL5
 
kPVT :

630 빌드에서 표시기가 컴파일을 중지했습니다.

c i 선언이 for 전에 배치되면 오류를 제거할 수 있습니다.

'rates_total' - 선언되지 않은 식별자는 어떻습니까?

Win7 x64 및 XP x32에서도 동일합니다.

분명히 코드 어딘가에 버그가 있습니다. 변수 limit, RT를 선언하고 if() 조건을 설정하면 제시된 블록이 오류 없이 컴파일됩니다.
 
Rosh :
분명히 코드 어딘가에 버그가 있습니다. 변수 limit, RT를 선언하고 if() 조건을 설정하면 제시된 블록이 오류 없이 컴파일됩니다.

당연히 코드를 제공하지 않았지만 대략적인 구조를 제공했기 때문입니다.

빌드 619에서 표시기가 컴파일되고 완벽하게 작동했습니다.

630에서 표시된 오류를 제공합니다.

코드 100%는 변경되지 않았습니다. 컴파일러는 분명히 변경되었습니다.

 
Service Desk에 작성 하여 소스 코드를 첨부하십시오. 이렇게 하면 개발자가 원인을 찾고 수정하는 데 도움이 됩니다.
 
speedy :

벌레?

아래 코드는 컴파일러에서 영원한 루프와 같은 것을 생성합니다. 취소 클릭(컴파일 취소)

즉시 작동하지 않지만 작동하면 편집기에 대한 제어를 반환합니다.

동시에 취소 버튼 자체는 사라지지 않지만 사용 가능한 상태로 남아 있지도 않습니다.

컴파일 버튼이 영원히 사라집니다(돌아가려면 편집기를 다시 시작해야 함)

메시지 감사합니다. 컴파일러 오류가 수정되었습니다.
 
victorg :

말해 주세요. MathMin () 및 MathMax ()는 함수(스택에 전달되는 매개변수 포함) 또는 매크로 대체( 인라인 )로 구현됩니까? 참고서로 판단하면 이것들은 기능 입니다.

물론 함수는 컴파일 타임에 인수의 값을 알 수 없기 때문입니다. IMHO 인라인 및 매크로 대체는 다릅니다.

추신: 인라인 여부를 말할 수 없습니다.

 
220Volt :

물론 함수는 컴파일 타임에 인수의 값을 알 수 없기 때문입니다. IMHO 인라인 및 매크로 대체는 다릅니다.

추신: 인라인 여부를 말할 수 없습니다.

매크로와 인라인 함수는 정말 다른 것입니다. 하지만 나는 그것에 대해 말하는 것이 아닙니다. 다음은 컴파일 타임에 인수 값을 알 수 없는 경우의 예입니다.

 #define  min(a,b) (((a)<(b))?(a):(b))
double func(a,b)
  {
  c=min(a,b);   // 1-й вариант
  c= fmin (a,b);   // 2-й вариант
   return (c);
  }

첫 번째 경우에는 코드가 현재 함수에 삽입되어야 하고(아마도), 두 번째 경우에는 스택을 통해 매개변수를 전달 하여 함수를 호출해야 합니다(아마도). 그러나 최적화를 위해 컴파일러는 실제로 두 번째 옵션을 대체하여 구현할 수 있습니다. 그렇 습니까? 모르겠어요. 그래서 내가 물었다.

Документация по MQL5: Основы языка / Функции / Передача параметров
Документация по MQL5: Основы языка / Функции / Передача параметров
  • www.mql5.com
Основы языка / Функции / Передача параметров - Документация по MQL5