Люди, вот если в библиотеке (Library) сделать допустим переменную/функцию/.. и т.д. приватной (private int Int), она ж потом после парсинга в чистый джасс будет иметь имя (Library___Int) или (Library__Int), то есть имя библиотеки + 2 или 3 нижних подчеркивания (по рандому ставится, не знаю от чего это зависит) и имя переменной.
К сути, можно ж как-то определить какой именно разделитель __ или ___?
Вот идея, но надо протестить.
К тому же не уверен что сработает, мб кто знает способ?
library Library initializer Init{
  define{
    private Check=Int
    Divide=0
  }
  #if Library___Int==Check then
    setdef Divide=___
  #else
    setdef Divide=__
  #endif
  void Init(){
    BJDebugMsg(`Divide`)
  }
}

Принятый ответ

nvc123, та уже не надо, такой вариант не катит. Вообще, как оказалось, определить разделитель во время компиляции невозможно (
Но есть альтернатива, при которой разделитель будет всегда равен ___ (3 нижних подчеркивания)
library Test{
  private int Check
  struct Test{
    private static int Check
  }
}
В таком случае переменные будут определяться как
Test___Check=0 // переменная библиотеки
Test__Check=0 // переменная структуры
Может кому понадобится, хотя вряд ли
0
28
6 лет назад
0
есть более простой способ
заменить private на public
вообще private нужен для инкапсуляции
если инкапсуляции нету то нафига его писать?
0
12
6 лет назад
0
nvc123, та уже не надо, такой вариант не катит. Вообще, как оказалось, определить разделитель во время компиляции невозможно (
Но есть альтернатива, при которой разделитель будет всегда равен ___ (3 нижних подчеркивания)
library Test{
  private int Check
  struct Test{
    private static int Check
  }
}
В таком случае переменные будут определяться как
Test___Check=0 // переменная библиотеки
Test__Check=0 // переменная структуры
Может кому понадобится, хотя вряд ли
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.