Ошибки, баги, вопросы - страница 3442

 
A100 #:

Совершенно верно, но принципиальная ошибка в данном случае именно в sizeof

sizeof должен быть такого типа, чтобы возвращать максимально возможный размер в системе. Для x64 разрядных систем он должен выглядеть так:

Т.е. пользователь не должен думать, о корректности размера - произведение на sizeof всегда должно возвращать корректное значение.

Определим корректный sizeof:

Результат: 4294967292

как и ожидалось

А что изменилось по сравнению с первоначальным примером? - просто добавили строку (*)

Мне сложно предствить размер одного экземпляра объека более  2 147 483 647 байт. Возможно скоро наступят такие времена, но сейчас сомневаюсь.
Впрочем согласен, логичнее для  sizeof() использовать было uint тип, а не int(ведь размер не может быть отрицательным). Но испльзовать ulong (как в вашем предыдущем примере), это явный перебор.

 
Nikolai Semko #:

Мне сложно предствить размер одного экземпляра объека более  2 147 483 647 байт. Возможно скоро наступят такие времена, но сейчас сомневаюсь.

Вот пользователю уже сейчас (!) нужно

Nikolai Semko #:

Впрочем согласен, логичнее для  sizeof() использовать было uint тип, а не int. Но использовать ulong (как в вашем предыдущем примере), это явный перебор.

Это не я придумал - вот цитата с сайта Microsoft: "Результатом sizeof оператора является тип size_t" - а там далеко не дураки сидят

 
A100 #:

Вот пользователю уже сейчас (!) нужно

Это не я придумал - вот цитата с сайта Microsoft: "Результатом sizeof оператора является тип size_t" - а там далеко не дураки сидят

А, если для OpenCL, тогда согласен. 
 
A100 #:

Баг в MQL - это

MQ не прокомментировали.

 
Nikolai Semko #:

Мне сложно представить размер одного экземпляра объекта более  2 147 483 647 байт.

Кстати и с чуть меньшим размером не факт, что все получится:

void f() { static int i[]; }
char i[INT_MAX-240];
void OnStart() {}

Результат: fatal compiler error: code generation failed

 
Установлен интервал для тестирования: от 2023-12-26 до 2023-12-27.
В журнале отображается ошибка: set mode to math calculations or adjust testing dates.
 
zaaz #:
Установлен интервал для тестирования: от 2023-12-26 до 2023-12-27.
В журнале отображается ошибка: set mode to math calculations or adjust testing dates.

Текущий день не тестируется, а вы хотите и завтрашний день протестировать.

 
Почему текущий день не тестируется? Мой собственный советник прекрасно тестируется на мт4 в текущий день.
 
В одном случае есть ошибка при компиляции, а в другом нет:
class T {};          //(1)
template<typename T> //(2)//Error: 'T' - identifier already used
void f() {}
template<typename T> //(2)//нормально
void f() {} 
class T {};          //(1)

А какая принципиальная разница в каком порядке идут (1) и (2) ?

 
Ошибка при компиляции:
#define delete(X)    delete X
class A {} *a = new A;
void OnStart()
{
    delete( a ); //(1)//нормально
    delete  a  ; //(2)//Error: argument expected for the function-like macro 'delete'
}

MQL путает макрос и оператор

Причина обращения: