можете обьяснить или показать пример как на cjass хранить функцию в define и вызывать ее аргументами?
в мануэле cjass про вызов функции не очень понятно написали
а вот про обычные макросы я уже знаю даже аргументами уже пльзуюсь) полезная штука)
вот бы функции так же вызывать одна функция для всех) будет здорово)
короче как функцию хранить в
define
registet_func(type) - это что за type? аргументы как передаются
endefine?
и как вызвать макрос функцию и
например имя моей функции
blablabla(здесь аргументы unit real integer)

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

Мануал описывает поведение макросов достаточно понятно. Разъясняя пример в теме другими словами
define MyFunc(type) = {
	nothing MyFunc_##type(type x){
		BJDebugMsg('type')
	}
}
Если препроцессор, обрабатывая код, наткнется на строчку, где вызывается макрос MyFunc, например
// Где-то в CustomScript карты
MyFunc(real)
Он применит указанный выше макрос, заменив в нем слово type на указанное в скобках MyFunc слово real, в результате чего получим код
// MyFunc(real) убрано препроцессором и заменено кодом ниже
nothing MyFunc_real(real x){
	BJDebugMsg("real")
}
Что впоследствии транслируется из cJass в обычный Jass2
function MyFunc_real takes real x returns nothing
	call BJDebugMsg("real")
endfunction
0
10
7 лет назад
0
тоже интересно, type - насколько я понимаю, сама функция
0
17
7 лет назад
0
ImbaStyle, я для начала тоже так думал), много раз пытался использовать его как написано на мануал, короче про конструирование макросов слишком коротко написалина cjass manual любой человек не поймет такую статью
0
10
7 лет назад
Отредактирован ImbaStyle
0
AntiMage:
ImbaStyle, я для начала тоже так думал), много раз пытался использовать его как написано на мануал, короче про конструирование макросов слишком коротко написалина cjass manual любой человек не поймет такую статью
я ее сам не до конца понял, но прочитав 1 раз стал активно использовать, есть там плюшки, которые я долго искал, типо дефайнов, слияния и разбиванияя строк)
0
17
7 лет назад
0
ImbaStyle, символы слияние ##
а какие символы разбивания про разбивку чечи не шло же
0
10
7 лет назад
Отредактирован ImbaStyle
0
AntiMage:
ImbaStyle, символы слияние ##
а какие символы разбивания про разбивку чечи не шло же
u1 = GetTriggerUnit(); u2 = GetEnumUnit() (можно писать в одну строку, но символ ";" - это перенос строки)
2
17
7 лет назад
Отредактирован GetLocalPlayer
2
Мануал описывает поведение макросов достаточно понятно. Разъясняя пример в теме другими словами
define MyFunc(type) = {
	nothing MyFunc_##type(type x){
		BJDebugMsg('type')
	}
}
Если препроцессор, обрабатывая код, наткнется на строчку, где вызывается макрос MyFunc, например
// Где-то в CustomScript карты
MyFunc(real)
Он применит указанный выше макрос, заменив в нем слово type на указанное в скобках MyFunc слово real, в результате чего получим код
// MyFunc(real) убрано препроцессором и заменено кодом ниже
nothing MyFunc_real(real x){
	BJDebugMsg("real")
}
Что впоследствии транслируется из cJass в обычный Jass2
function MyFunc_real takes real x returns nothing
	call BJDebugMsg("real")
endfunction
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.