Нужна ли конструкция #ifdef #else #endif в дополнение к #define ? - страница 5

 
C-4:

В свете выхода нового MQL4++ Конструкция #ifdef #endif нужна как воздух, для кроссплатформенной компляции программ MQL4 <--> MQL5, когда API зависимые функции типа OrderSend обрамляются макросом условной компиляции:

Не факт.

Исходные файлы всё равно лежат раздельно в своих терминальных папках MQL4 и MQL5.

Вот сейчас я гоняю тесты в новом четвёрочном терминале, написанные для пятёрки. Никаких ифоф-ифдефов. И всё работает как надо!

Всё решается на уровне стандартных инклюдов. Они просто несколько отличаются друг от друга в зависимости от платформы. По-любому надо держать 2 их набора - для MQL4 и для MQL5 (то есть на них кроссплатформенность не распространяется)

 
stringoВот сейчас я гоняю тесты в новом четвёрочном терминале, написанные для пятёрки.
  А когда же мы будем гонять тесты ?
 
stringo:

Не факт.

Исходные файлы всё равно лежат раздельно в своих терминальных папках MQL4 и MQL5.

Вот сейчас я гоняю тесты в новом четвёрочном терминале, написанные для пятёрки. Никаких ифоф-ифдефов. И всё работает как надо!

Всё решается на уровне стандартных инклюдов. Они просто несколько отличаются друг от друга в зависимости от платформы. По-любому надо держать 2 их набора - для MQL4 и для MQL5 (то есть на них кроссплатформенность не распространяется)

Дык неудобно универсальные библиотеки классов разрабатывать.  // Не только ж вы их делаете, юзеры тоже.

Нужно же синхронно правки вносить при необходимости и тп.  

Гораздо удобнее в этих случаях один и тот же интерфейс класса реализовывать по разному в зависимости от платформы, но чтоб оба кода были рядом, в зоне видимости.

 
После обсуждения мы приняли решение в следующих билдах (не в ближайшем) добавить #ifdef
 
Renat:
После обсуждения мы приняли решение в следующих билдах (не в ближайшем) добавить #ifdef

Отличная новость.  Спасибо.

Кстати, вам тоже удобнее будет библиотеки разрабатывать и поддерживать синхронность функционала.

// Общий компилятор это круто.  Общие библиотеки - ещё круче.

 
Renat:
После обсуждения мы приняли решение в следующих билдах (не в ближайшем) добавить #ifdef

Очень хорошо.

Ещё бы хотелось предопределённую константу, которая указывает разрядность MT.

Например так: __X64__ .

 
Zloy_Koldun:

Очень хорошо.

Ещё бы хотелось предопределённую константу, которая указывает разрядность MT.

Например так: __X64__ .

А как разрядность МТ повлияет на исходный код? Сорцы компилируются в код виртуальной машины, которая его и исполняет. Или Вы научились управлять этой самой машиной?
 
C-4:
А как разрядность МТ повлияет на исходный код? Сорцы компилируются в код виртуальной машины, которая его и исполняет. Или Вы научились управлять этой самой машиной?
А это не требуется.  Главное чтоб исходный код влиял на скомпилированный результат.
 
TheXpert:

Кто говорит про невозможность? Про удобство.

Вот недавно поднимались вопросы по коллстеку и дебаг информации. Информация ведь не самая легкая, отключение с помощью макросов сделать элементарно, а без них?

Далее, переключение языка комментариев, к примеру...

Вот кстати еще одна причина ввода #ifdef. Скажем:

void main()
{
   #ifdef DEBUG
      Tracert.Push(__FUNCTION__)
   #endif
   ...
   ...
   #ifdef DEBUG
      Tracert.Pop()
   #endif
}
 
C-4:

Вот кстати еще одна причина ввода #ifdef. Скажем:

Причин много.. Но ведь таки решение принято?  Расслабиться уже можно.
Причина обращения: