Добавлен
Ловлю неприятный баг с define.
Как его можно вылечить?
>integer a=A(1 2 3 4 5 6 7 8 9)
Critical error: too many arguments passed to define.
карта
код
define {
  def1(Z) = {}
  def2(Z) = {}
  def3(Z) = {}
  def4(Z) = {}
  def5(a) = {}
  def5(a) = {}
  def6(a) = {}
  def7(a) = {}
  def8(a) = {}
  def9(N) = {}
}

nothing g123() {
  integer a = A(1,2,3,4,5,6,7,8,9)
}

define {
  A(a,t1) = 1
  A(a,t1,t2) = 2
  A(a,t1,t2,t3) = 3
  A(a,t1,t2,t3,t4) = 4
  A(a,t1,t2,t3,t4,t5) = 5
  A(a,t1,t2,t3,t4,t5,t6) = 6
  A(a,t1,t2,t3,t4,t5,t6,t7) = 7
  A(a,t1,t2,t3,t4,t5,t6,t7,t8) = 8
}
Ошибки нет:
карта
код
define {
  A(a,t1) = 1
  A(a,t1,t2) = 2
  A(a,t1,t2,t3) = 3
  A(a,t1,t2,t3,t4) = 4
  A(a,t1,t2,t3,t4,t5) = 5
  A(a,t1,t2,t3,t4,t5,t6) = 6
  A(a,t1,t2,t3,t4,t5,t6,t7) = 7
  A(a,t1,t2,t3,t4,t5,t6,t7,t8) = 8
}

  nothing g123() {
    integer a = A(1,2,3,4,5,6,7,8,9)
  }

Проверил отладчиком - все сложно. Подсказать вряд-ли что-то смогу.

Там судя по всему неправильно срабатывает сортировка перегруженных макросов, они должны в своей таблице располагаться по количеству аргументов, а располагаются они черти как. При этом если оставить одно или два определения типа def1 - все сохраняется.
`
ОЖИДАНИЕ РЕКЛАМЫ...
28
Не думаю, cJass давно никто не обновлял. Можешь попробовать перед каждый написать define.
18
Можешь попробовать перед каждый написать define.
Это не помогло.

Сейчас баг ставит ограничение на количество дефайнов на карте. В данном примере достаточно десяти. Или придется вовсе отказаться от таких перегрузок.
С другой стороны, в cj_print.j есть перегрузки с 18 аргументами.
28
Vlod, лучше напиши adic3x (создатель cJass), может, он чем подсобит.
32
Проверил отладчиком - все сложно. Подсказать вряд-ли что-то смогу.

Там судя по всему неправильно срабатывает сортировка перегруженных макросов, они должны в своей таблице располагаться по количеству аргументов, а располагаются они черти как. При этом если оставить одно или два определения типа def1 - все сохраняется.
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.