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

 
pavlick_:

Не работает:

#define AZ(R)  "df" #R
string s = AZ(rty);
И не должен. Плюсик добавьте.
 
fxsaber:
И не должен. Плюсик добавьте.

В С/С++ должно. Более того, в мкл вот так работает:

string s = "sdd" "trt";
через макрос не хочет, хотя одно и то же по сути.
 
pavlick_:

В С/С++ должно. Более того, в мкл вот так работает:

string s = "sdd" "trt";
через макрос не хочет, хотя одно и то же по сути.

А для чего такая запись - без плюса? Удобство? - сомнительно.

Никто же не пишет так

int i = 1 2; // типа 3
Или выполняем стандарт ради стандарта. Задумываться - не наше.
 
fxsaber:

А для чего такая запись - без плюса? Удобство? - сомнительно.

Никто же не пишет так

int i = 1 2; // типа 3
Или выполняем стандарт ради стандарта. Задумываться - не наше.
Хотя бы потому, что с оператором + вы получите run time операцию вместо compile time.
 
pavlick_:
Хотя бы потому, что с оператором + вы получите run time операцию вместо compile time.
Такое возможно только в тупом компиляторе. Сами же все понимаете.
 

Всем Привет!

Вопрос к многоуважаемым Разработчикам и Знатокам.


 Я поискал на форуме но так и не нашёл ответа,прошу не пинать.

А что, в окне наблюдения за выражениями  нельзя изменять значения переменных в процессе отладки?

Можно только калькулировать и всё? 

Весьма признателен за ответ. 

 
Northwest:

Всем Привет!

Вопрос к многоуважаемым Разработчикам и Знатокам.


 Я поискал на форуме но так и не нашёл ответа,прошу не пинать.

А что, в окне наблюдения за выражениями  нельзя изменять значения переменных в процессе отладки?

Можно только калькулировать и всё? 

Весьма признателен за ответ. 

На данный момент, изменять значения переменных нельзя - только калькулировать.
 
fxsaber:
Такое возможно только в тупом компиляторе. Сами же все понимаете.
C++ компилятор за вас думать не станет.
#include <iostream>
using namespace std;
struct S
{
    S operator +(const S&) {cout << "operator +\n"; return S{};}
};
S operator ""_s(const char*, size_t) {cout << "literal operator\n"; return S{};}
int main()
{
    cout << "___literal concatenation example___\n";
    S s = "sd"_s "sf"_s;
    cout << "___operator+ example___\n";
    S s2 = "sd"_s + "sf"_s;
}
Выхлоп:
___literal concatenation example___
literal operator
___operator+ example___
literal operator
literal operator

operator +

Как видно, оператор+ не был заменён склейкой во втором случае (создалось для литерала с последующим run time сложением). Компиятор просто не может вырезать его из-за слишком больших возможностей у программиста, это сильно ограничивает возможности для оптимизации. Это не МКЛ, конечно, в нём может всё иначе, но само утверждение: "нормальный компилятор всё сделает за меня" - ошибочно.
 
pavlick_:
Это не МКЛ, конечно, в нём может всё иначе, но само утверждение: "нормальный компилятор всё сделает за меня" - ошибочно.
Ну раз нет таких операторов в MQL, то и возможностей, связанных с ними, логично не иметь. Насчет компиляторов спорить не буду, т.к. ни разу не программист. Знаю немного только MQL.
 

Заколебался уже выкидывать в трубу время и деньги: оптимизатор зависает на последнем проходе. Агенты ничего не делают, все на стадии Authorized. В журнале тишина. Включать/отключать агентов бессмысленно, после повторного запуска оптимизации все начинается с нуля.

Кто сталкивался? Как бороться?

Файлы:
opt1.png  44 kb
opt2.png  96 kb
opt3.png  88 kb