Erros, bugs, perguntas - página 2498

 
Andrei Trukhanovich:

Nesse caso, imho, não deveria.

Porque é que o tamanho aqui não deveria ser um múltiplo de quatro?

Acontece que as classes também podem ser alinhadas.

 
fxsaber:

Porque é que o tamanho aqui não deveria ser um múltiplo de quatro?

Acontece que as classes também podem ser alinhadas.

porque se trata de um alinhamento interno. A próxima variável externa será muito provavelmente colocada com um alinhamento de 8, independentementedo tamanho da estrutura.

 
Andrei Trukhanovich:

porque é um alinhamento interno

Então receio que se perca o ponto de alinhamento

struct A pack(4)
{
  short j;
};

void OnStart()
{
  Print(sizeof(A)); // 2
  
  const int handle = FileOpen(__FILE__, FILE_WRITE | FILE_BIN);
  
  if (handle != INVALID_HANDLE)
  {
    A a = {0};
    
    FileWriteStruct(handle, a);
    Print(FileTell(handle)); // 2
    
    FileClose(handle);
  }
}
 
fxsaber:

Então receio que se perca o ponto de alinhamento

o objectivo do alinhamento é fazer com que a variável interna se dirija a um múltiplo do alinhamento.

 
Andrei Trukhanovich:

o objectivo do alinhamento é fazer com que a variável interna se dirija a um múltiplo do alinhamento.

Tentei comparar a sua declaração com a Documentação, mas ainda não compreendi.

 
Andrei Trukhanovich:

Uma coisa sem ser descoberta, aparentemente. Aqui já há claramente um erro:

struct A pack(4)
{
  short j;
};

void OnStart()
{
   A q[2];
   Print(sizeof(q)); // 4
   return;
}
 
fxsaber:

Tentei comparar a sua declaração com a Documentação, mas não compreendo.

Penso que a ajuda não foi actualizada, ou seja, na construção com suporte C# (no Inverno?) havia uma descrição de como funciona agora o alinhamento.

acabei de pesquisar no Google um artigo sobre hobber sobre alinhamento. penso que vai funcionar da mesma forma no MT5 agorahttps://habr.com/ru/post/142662/

 
Igor Makanu:

Penso que a ajuda não foi actualizada, parece que na construção com suporte C# (no Inverno?) havia uma descrição de como funciona agora o alinhamento

Procurei no Google este artigo sobre o alinhamento e parece funcionar da mesma forma no MT5 agorahttps://habr.com/ru/post/142662/

Li o artigo e os comentários ao mesmo. Não compreendo de todo o algoritmo de alinhamento. Está preparado para embalar(4) mas por alguma razão algo está alinhado com 2 e algo com 4.

 
fxsaber:

Analisei o artigo e os comentários sobre ele. Não compreendo de todo o algoritmo de alinhamento. É um pacote(4), mas por alguma razão algo se alinha com 2, algo com 4.

Porquê incomodar? O alinhamento único por defeito é o mesmo de antes (e é pouco provável que mude), o especificador do pacote é torto. Se precisar muito, pode inserir você mesmo o suplemento.

 
Vict:

Porquê incomodar? O alinhamento único por defeito é o mesmo de antes (e é pouco provável que mude), o especificador do pacote é torto. Se precisar realmente dele, pode inserir você mesmo o suplemento.

Quero ir até ao fundo da questão.

Razão: