можете обьяснить или показать пример как на 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
`
ОЖИДАНИЕ РЕКЛАМЫ...
10
тоже интересно, type - насколько я понимаю, сама функция
17
ImbaStyle, я для начала тоже так думал), много раз пытался использовать его как написано на мануал, короче про конструирование макросов слишком коротко написалина cjass manual любой человек не поймет такую статью
10
AntiMage:
ImbaStyle, я для начала тоже так думал), много раз пытался использовать его как написано на мануал, короче про конструирование макросов слишком коротко написалина cjass manual любой человек не поймет такую статью
я ее сам не до конца понял, но прочитав 1 раз стал активно использовать, есть там плюшки, которые я долго искал, типо дефайнов, слияния и разбиванияя строк)
17
ImbaStyle, символы слияние ##
а какие символы разбивания про разбивку чечи не шло же
10
AntiMage:
ImbaStyle, символы слияние ##
а какие символы разбивания про разбивку чечи не шло же
u1 = GetTriggerUnit(); u2 = GetEnumUnit() (можно писать в одну строку, но символ ";" - это перенос строки)
15
Мануал описывает поведение макросов достаточно понятно. Разъясняя пример в теме другими словами
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
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.