Erros, bugs, perguntas - página 1003

 
stringo:

ts===verdadeiro e ts!=NULL são expressões completamente diferentes.

Além disso

ts===verdadeiro e ts!=falso são também expressões diferentes

Sabe como eles são diferentes? Não só na sintaxe, mas também na semântica.

Mas o objectivo da pergunta era que a ts é uma matriz. E porquê isto se a(s) compilação(ões) e o acima mencionado não se compila(m).
 
sion:
O único ponto da questão era que o ts é uma matriz. E porque é que isto se (ts) compilar e os acima mencionados não o fizerem.

A expressão se(ts) significa que a matriz de objectos ts realmente existe. Criei especificamente a semântica.

Quer proibir a compilação deste caso ou será suficiente um aviso? (A propósito, deve haver um aviso. Se não há nenhum aviso, a culpa é nossa, algo está partido)

 

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Insectos, insectos, perguntas

stringo, 2013.06.17 06:35

Se a expressão "ts" significa que o objecto da matriz ts existe realmente. Mencionei especificamente a semântica.

Quer proibir a compilação deste caso ou é suficiente um aviso? (A propósito, deve haver um aviso. Se não houver aviso, a culpa é nossa, algo está partido)


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
Parece
mais
que está a trabalhar com a primeira célula da matriz.
 
#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(); } //ошибка компиляции

O ServiceDesk não reconhece o erro, referindo-se ao facto de os identificadores não poderem começar com um número.

Mas o 5Test não é um identificador, é um nome de ficheiro. E os nomes dos ficheiros podem começar com um dígito e não foram impostas restrições à #importação de nomes de ficheiros .ex5

 
A100:

O ServiceDesk não reconhece o erro, referindo-se ao facto de os identificadores não poderem começar com um número.

Mas o 5Test não é um identificador, é um nome de ficheiro. E os nomes de ficheiro podem começar com um dígito e não foram impostas restrições à #importar nomes de ficheiro .ex5

5Test::A é um identificador.

E 5Test é reconhecido como um nome de ficheiro desde que este nome esteja entre aspas na frase de importação (a propósito, também tem aí escrito "5Test.ex5").

 
É por isso que os compiladores C/C++ adicionam automaticamente um sublinhado (_) à representação interna do nome da função no ficheiro/módulo, para que o nome final "_5TestA" não comece com um número, o que garante a compatibilidade
 
A100:
É por isso que os compiladores C/C++ adicionam automaticamente um carácter de sublinhado (_) à representação interna do nome da função num ficheiro/módulo, para que o nome resultante "_5TestA" não comece com um número, o que garante a compatibilidade

Como se revelou, assim se revelou. Só tem de o aceitar.

Este é um lugar perigoso para editar - o comportamento do compilador pode mudar tanto que ninguém ficará satisfeito.

 
stringo:

Este é um lugar perigoso para editar - o comportamento do compilador pode ser alterado de tal forma que ninguém ficará satisfeito.

Concordo.

Por favor, dê uma vista de olhos a este exemplo:

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

O compilador C/C++ tem cérebros suficientes para distinguir a variável aX da macro paramétrica aX( X ).

As macros paramétricas são a única alternativa na ausência de funções em linha e os nomes podem frequentemente sobrepor-se em código longo

 
A100:

Concordo.

Por favor, dê uma vista de olhos a este exemplo:

O compilador C/C++ numa situação semelhante tem a inteligência para distinguir a variável aX da macro paramétrica aX( X )
Consulte um terapeuta! (em servicedesk)
 
Rosh:

Claro, apenas publicou exemplos no outro dia:

  1. Demo_IndicatorSetInteger
  2. Demo_IndicatorSetDouble
  3. Demo_IndicatorSetString

Obrigado! Descobriu-o com a sua ajuda.