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

 
stringo :

ts==true와 ts!=NULL은 완전히 다른 표현입니다.

뿐만 아니라

ts==true와 ts!=false도 다른 표현입니다.

어떻게 다른지 아십니까? 구문뿐만 아니라 의미론에서도

문제의 핵심은 ts가 배열이라는 것입니다. 그리고 왜 이것은 if(ts) 컴파일되고 위의 것은 컴파일되지 않습니다.
 
sion :
문제의 핵심은 ts가 배열이라는 것입니다. 그리고 왜 이것은 if(ts) 컴파일되고 위의 것은 컴파일되지 않습니다.

if(ts) 문은 배열 객체 ts가 실제로 존재함을 의미합니다. 나는 특히 의미론에 대해 이야기했습니다.

이 케이스가 컴파일되지 않도록 하시겠습니까, 아니면 경고로 충분합니까? (그런데 경고가 있어야합니다. 경고가 없으면 이것은 우리의 결함입니다. 무언가가 끊어졌습니다)

 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

오류, 버그, 질문

스트링고 , 2013.06.17 06:35

if(ts) 문은 배열 객체 ts가 실제로 존재함을 의미합니다. 나는 특히 의미론에 대해 이야기했습니다.

이 사례가 컴파일되는 것을 방지하시겠습니까, 아니면 경고로 충분합니까? (그런데 경고가 있어야합니다. 경고가 없으면 이것은 우리의 결함입니다. 무언가가 끊어졌습니다)


int ts[20];

void OnInit()
{
ts[0]=0;ts[1]=1;
if(ts)Print("ts[0]=0");
ts[0]=1;
if(ts)Print("ts[0]=1");
}

void OnTick()
{

}

2013.06.17 08:41:31 test_forum (EURUSD.e,M15) ts[0]=1
배열의 첫 번째 셀에서 작동하는 것처럼 보입니다.
 
#import "Test.ex5"
   void A();
#import "5Test.ex5"
   void A();
#import "Test5.ex5"
   void A();
#import

void B() { Test::A(); } //нормально
void C() { Test5::A(); } //нормально
void D() { 5 Test::A(); } //ошибка компиляции

ServiceDesk는 식별자가 숫자로 시작할 수 없다는 사실을 참조하여 오류를 인식하지 못합니다.

그러나 5Test는 식별자가 아니라 파일 이름입니다. 그리고 파일 이름은 숫자로 시작할 수 있으며 #import .ex5 파일 이름에는 제한이 없습니다.

 
A100 :

ServiceDesk는 식별자가 숫자로 시작할 수 없다는 사실을 참조하여 오류를 인식하지 못합니다.

그러나 5Test는 식별자가 아니라 파일 이름입니다. 그리고 파일 이름은 숫자로 시작할 수 있으며 #import .ex5 파일 이름에는 제한이 없습니다.

5Test::A - 둘 다 식별자가 아닌 최대.

그리고 파일 이름 5Test는 이 이름이 가져오기 절에서 따옴표로 묶인 한 인식됩니다(그런데 거기에 "5Test .ex5 "라고 작성했습니다)

 
이것이 C/C++ 컴파일러가 파일/모듈에 있는 함수 이름의 내부 표현에 밑줄 문자(_)를 자동으로 추가하여 최종 이름 "_5TestA"가 숫자로 시작하지 않도록 하여 호환성을 보장하는 이유입니다.
 
A100 :
이것이 C/C++ 컴파일러가 파일/모듈에 있는 함수 이름의 내부 표현에 밑줄 문자(_)를 자동으로 추가하여 최종 이름 "_5TestA"가 숫자로 시작하지 않도록 하여 호환성을 보장하는 이유입니다.

일어난 대로, 그렇게 되었습니다. 진정해야 합니다.

이 시점에서 편집하는 것은 위험합니다. 컴파일러의 동작은 아무도 기뻐하지 않는 방식으로 변경될 수 있습니다.

 
stringo :

이 시점에서 편집하는 것은 위험합니다. 컴파일러의 동작은 아무도 기뻐하지 않는 방식으로 변경될 수 있습니다.

동의한다.

다음 예를 참조하십시오.

 #define aX( X ) (X)
void K()
{
         int aX = 10 ;
         Print ( aX( 5 ) );
         Print ( aX ); 
}
// ошибка компиляции

비슷한 상황에 있는 C/C++ 컴파일러는 변수 aX를 매개변수 매크로 aX( X )와 구별할 만큼 충분히 똑똑합니다.

인라인 함수가 없는 경우 매개변수 매크로가 유일한 대안이며 이름이 큰 코드에서 종종 겹칠 수 있습니다.

 
A100 :

동의한다.

다음 예를 참조하십시오.

비슷한 상황에 있는 C/C++ 컴파일러는 변수 aX를 매개변수 매크로 aX( X )와 구별할 만큼 충분히 똑똑합니다.
치료사에게! (서비스 데스크로)
 
Rosh :

물론 바로 전날 그들은 다음과 같은 예를 발표했습니다.

  1. Demo_IndicatorSetInteger
  2. Demo_IndicatorSetDouble
  3. Demo_IndicatorSetString

고맙습니다! 당신의 도움으로 이해했습니다.