O código mostra um BAG onde uma condição não pode ser introduzida, mas mesmo assim desencadeia um ponto de quebra num local completamente diferente no código. Mais perguntas?
O optimizador de código deitou tudo fora e a função foi deixada vazia.
O ponto de quebra foi movido para o fim da função e desencadeado.
Foi o optimizador de código que deitou tudo fora e deixou a função vazia. O ponto de parada deslocou-se para o mesmo fim da função e funcionou.
Fiquei um pouco excitado com o primeiro exemplo, concordo. Mas e quanto ao segundo? Bem, o ponto de parada permanece dentro da condição e não se desloca para lado nenhum. O desencadeamento de um ponto de quebra induz o utilizador a pensar que a condição de entrada foi cumprida, quando na realidade pode não o ser de todo:
class A{
public:
bool m_flag;
A* m_next;
A(bool flag) : m_flag(flag){}
void test(){
if(m_flag){
printf("1");
m_next = m_next; // Вручную установленная точка останова срабатывает как для false так и true условий//m_next = &this; // Ok
}
}
};
voidOnStart(){
{A a(false); a.test();} // Result: breakpoint Expected result:
{A a(true); a.test();} // Result: printf + breakpoint Expected result: printf + breakpoint
}
namespace NameSpace{
struct A{};
template<typename T>
struct B : public A{}; // 'A' - declaration without type
};
struct D : public NameSpace::B<int>{
int data;
};
voidOnStart(){
D d;
}
Porque é que emOBJ_TRENDBYANGLE não podemos conhecer o ângulo programático?
Podemos definir programticamente o tempo e os preços dos dois pontos, mas o ângulo retorna 0.
Se movermos OBJ_TRENDBYANGLE manualmente, ele devolve o valor do ângulo normal.
Quero simplesmente colocar o texto na linha de tendência no mesmo ângulo que a própria linha de tendência.
Mas a linha de tendência não devolve o ângulo, enquanto OBJ_TRENDBYANGLE tem uma segunda coordenada fixa e quando a escala do gráfico muda em resultado da subida ou descida do preço, obtemos informações falsas...
Структура является набором элементов произвольного типа (кроме типа void). Таким образом, структура объединяет логически связанные данные разных типов. Объявление структуры Имя структуры нельзя использовать в качестве идентификатора (имени переменной или функции). Следует иметь ввиду, что в MQL5 элементы структуры следуют непосредственно друг...
O código mostra um BAG onde uma condição não pode ser introduzida, mas mesmo assim desencadeia um ponto de quebra num local completamente diferente no código.
Mais perguntas?
O optimizador de código deitou tudo fora e a função foi deixada vazia.
O ponto de quebra foi movido para o fim da função e desencadeado.
Foi o optimizador de código que deitou tudo fora e deixou a função vazia.
O ponto de parada deslocou-se para o mesmo fim da função e funcionou.
Fiquei um pouco excitado com o primeiro exemplo, concordo.
Mas e quanto ao segundo? Bem, o ponto de parada permanece dentro da condição e não se desloca para lado nenhum.
O desencadeamento de um ponto de quebra induz o utilizador a pensar que a condição de entrada foi cumprida, quando na realidade pode não o ser de todo:
O ponto de parada deslocou-se para o mesmo fim da função e funcionou.
Não acha que se trata de um insecto?
C++ em linha:https://onlinegdb.com/S1E503pj8
Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos
Perguntas OOP em MQL5
fxsaber, 2020.05.30 10:04
Obteve um resultado inesperado.Porque é que emOBJ_TRENDBYANGLE não podemos conhecer o ângulo programático?
Podemos definir programticamente o tempo e os preços dos dois pontos, mas o ângulo retorna 0.
Se movermos OBJ_TRENDBYANGLE manualmente, ele devolve o valor do ângulo normal.
Quero simplesmente colocar o texto na linha de tendência no mesmo ângulo que a própria linha de tendência.
Mas a linha de tendência não devolve o ângulo, enquanto OBJ_TRENDBYANGLE tem uma segunda coordenada fixa e quando a escala do gráfico muda em resultado da subida ou descida do preço, obtemos informações falsas...
Porque é que o compilador dá um aviso ?
UPD: não
int ArrayInitialize( uchar array[], valor uchar );
não é conveniente escrever
401código - qual é o erro?
o que é que se passa?
401
Não é possível herdar desta classe porque é declarada com specifier final
Porque é que o compilador dá um aviso ?
UPD: não
int ArrayInitialize( uchar array[], valor uchar );
não é conveniente para escrever
0xFF é provavelmente transformado em 4 bytes pelo compilador.
401código ,alguém me pode dizer qual é este erro?
encontrado
401
A herança desta classe não é possível porque é declarada com specifier final
Qual é a questão - não há modificador final, mas há um erro, ou o quê?