템플릿 매개변수가 있는 컴파일러 버그 = void* - 페이지 14

 

대괄호만. 너구리만. 하드코어만!!!11111

 #define   cmp(D1,D2)          \
  ((t_flp(D1)||t_flp(D2))?(((D1)>=(D2))?(((D1)-(D2))>=EPS(D1)? 1 : 0 ):(((D2)-(D1))>=EPS(D1)?- 1 : 0 )):(((D1)>(D2))? 1 :(((D1)<(D2))?- 1 : 0 )))
 
Ilya Malev :

대괄호만. 너구리만. 하드코어만!!!11111

#define에서만 컴파일러는 해당 경고를 발행하지 않으며 손상되지 않습니다 .

그건 그렇고, 추가 괄호가 있습니다

( ( (D1)<(D2) ) ?- 1 : 0 )
 

매크로에서 신은 스스로 대괄호를 넣으라고 명령했습니다. 그들 없이는 어디에도 없습니다.

Igor Makanu :

코드를 다른 프로그래밍 언어로 이식할 때 변경되지 않기 때문에

이러한 연산자의 우선 순위가 다른 C와 같은 언어가 있습니까? 제 생각에는 이것이 모든 곳의 표준입니다. 그리고 다른 언어(예: BASIC 또는 Pascal)에서는 비트 연산자와 조건 연산자가 전혀 유효하지 않습니다. 그래서 그것은 모두 가짜 문제입니다. 그리고 과거 MQ가 우선순위를 망쳤다는 것은 지표가 아니다)

 
A100 :

#define에서만 컴파일러는 해당 경고를 발행하지 않으며 손상되지 않습니다 .

그것도 알려주지만 먼저 특정 코드에서 사용해야 하고, 힌트가 의심되는 곳이 아니라, 코드에서 define 의 문자가 쓰여진 곳에 힌트가 있다는 것을 알려줍니다. 나는 이것이 당신의 너구리를 억제하고 그들의 전처리기를 강요하지 않는다는 일종의 힌트라고 생각합니다)

 
Ilya Malev :
그건 그렇고, 코드에서 기본적으로 공백을 사용하지 않습니까? 여기 다른 예가 있습니다. 모든 코드가 이 스타일이라면 어떻게 그런 기호 더미를 이해할 수 있는지 상상할 수 없습니다.
 
Alexey Navoykov :
그건 그렇고, 코드에서 기본적으로 공백을 사용하지 않습니까? 여기 다른 예가 있습니다. 모든 코드가 이 스타일이라면 어떻게 그런 기호 더미를 이해할 수 있는지 상상할 수 없습니다.

네, 저는 정의를 사용하지 않습니다. 왜냐하면 그것들을 코드로 생각하지 않기 때문입니다. 그것들은 단지 매크로일 뿐입니다. 그것들은 가능한 한 간결해야 합니다. 그리고 이 예제는 전체 라이브러리 중 가장 너구리 지향적인 것으로 전문가에 의해 선택되었습니다))

2분으로 작성된 예시는 들여쓰기가 중요한 부분을 보여주고 싶은 부분입니다 - OnStart에서 del 호출, 나머지는 부차적이며, 관찰하는 것보다 게시물이 반 페이지를 차지하지 않는 것이 더 중요합니다. 들여쓰기.

 
Ilya Malev :

...이것은 매크로일 뿐이며 가능한 한 작아야 합니다.

... 여기에서 들여쓰기를 관찰하는 것보다 게시물이 절반 페이지를 차지하지 않는 것이 더 중요합니다.

나는 당신의 논리와 우선 순위를 이해하지 못합니다)
 
A100 :

직접 설치하지 않으시겠습니까? 나는 당신의 프로필을 보기에 너무 게으르지 않았습니다.

다음과 같아야 합니다.

당신은 한 가지를 선언하지만, 스스로 하십시오 - 정확히 그 반대입니다.

브래킷 지지자가 스스로 넣지 않더라도 이것이 무용지물에 대한 가장 좋은 확인입니다.

아아, 예시로 인용한 제 코드는 제가 오래전, 4년 전에 작성한 것입니다.

내 게시물은 내가 산술/논리 표현식에서 모호하지 않은 것을 환영하고 대괄호를 통해 이를 달성할 수 있다는 사실에 관한 것이었습니다. 이제 저는 일반적으로 모호하지 않은 조건을 작성하려고 합니다. 저에게 더 쉽고 실수하는 것이 불가능합니다. 코드 섹션을 가져왔습니다. 가상 주문을 계산한 곳에서 이제 이 문제를 다음과 같이 작성합니다.

allorders = OrdersCount(all_buy,all_sell);
if (allorders== 0 ){
   // если торговля одним ордером выставим ордер и выход
   if (MA1>MA2) { BUY();   return ;}
   if (MA1<MA2) { SELL(); return ;}
.......   

// или так
   if (all_buy== 0 ){
       if (MA1>MA2) { BUY();   return ;}
   }
   if (all_sell== 0 ){
       if (MA1<MA2) { SELL();   return ;}
   }

//ф-ция подсчета ордеров
int OrdersCount( int &buy_, int &sell_)
{
   buy_= 0 ; sell_ = 0 ;
.............   
   return (buy_+sell_);

}

나는 대괄호의 지지자가 아니라 거래 전략과 같이 일대일로 읽힐 알고리즘의 명확한 읽기의 지지자입니다.

;)

추신: 저는 더 이상 holivar에 참여하지 않습니다. @fxsaber 가 괄호가 오류를 방지하는 데 도움이 된다고 썼더라도 논의할 것도 없습니다. 그가 할 수 있는 한 그러한 간결한 코드를 작성하기 때문입니다. 이 포럼에는 이 사람들 중 단 두 명뿐입니다. 간결함은 재능의 자매입니다 @fxsaber 에 관한 것입니다


일리야 말레프 :

대괄호만. 너구리만. 하드코어만!!!11111

그런 다음 Metaquotes가 MQL에서 본격적인 포인터를 제공하지 않는 이유를 이해했습니다.... 매크로와 코드에 포인터 전달, 포인터 역참조 기능을 제공했습니다... 하드코어는 매우 부드럽습니다. BDSM의 다음 단계는 무엇입니까? ))))

 
Igor Makanu :

그가 할 수 있는 한 그러한 간결한 코드를 작성하기 위해, 이 포럼에는 이 사람들 중 단 두 명뿐입니다. 간결함은 재능의 자매입니다 - 이것은 @fxsaber 에 관한 것입니다

여분의 브래킷 더미는 재능의 자매입니까? ) 그러나 모든 사람은 자신의 의견을 가질 권리가 있습니다.
 
Alexey Navoykov :
여분의 브래킷 더미는 재능의 자매입니까? ) 그러나 모든 사람은 자신의 의견을 가질 권리가 있습니다.

그들은 중복되지 않습니다! 그들은이 표현의 형성 논리를 읽는 데 도움이됩니다!

괄호의 수가 속도에 영향을 줍니까? - 글쎄, 타이핑 속도를 제외하고는 아무도 이것을 모니터링하지 않습니다 .... 인터넷에서 각 사용자가 하루에 스니치 한 부카프의 수가 생생한 예입니다)))