#define def1(%1.%2) ((%1>23:23:%1)*60+(%2>59?59:%s)) #define def2 def1(14.30)
Czy amxx zaakceptuje taki define i czy jeśli tak to czy wartość def2 będzie 870 ?
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Napisano 30.11.2019 18:49
#define def1(%1.%2) ((%1>23:23:%1)*60+(%2>59?59:%s)) #define def2 def1(14.30)
Czy amxx zaakceptuje taki define i czy jeśli tak to czy wartość def2 będzie 870 ?
Napisano 30.11.2019 19:19
A nie mozesz po prostu tego skompilować i sprawdzic ?
Napisano 30.11.2019 19:25
Argumenty w makrodefinicjach oddzielasz przecinkiem, nie kropką (def1).
Skrócony if ma taki syntax:
condition ? true : false
Według def1 próbujesz zrobić coś takiego:
14 > 23 : 23 : 14
Więc pierwszy dwukropek powinien być '?', o ile w ogóle o to Ci chodzi.
Nie wiem jak to ma działać do końca, ale niepokoi mnie ten %s na samym końcu. Wszystko zależy od kodu w obrębie makrodefinicji - a tego nie dostarczyłeś.
Tak jak @up, czemu nie sprawdzisz sam? Skoro już wiesz, że oczekujesz wyniku 870, to na pewno obmyśliłeś jak ma to działać.
Dodatkowo, jeśli piszesz tak złożone działania to bardzo ciężko to rozczytać, przez co kod wygląda niczym po obfuskacji. Oddzielaj spacją znaczące części:
#define def1(%1,%2) ((%1 > 23 : 23 : %1) * 60 + (%2 > 59 ? 59 : %s))
Użytkownik Wicked. edytował ten post 30.11.2019 19:28
Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.
Napisano 30.11.2019 20:36
Właściwie to przy przepisywaniu zrobiłem 2 błędy: zamiast : powinno być ? i zamiast %s powinno być %2, kropka była tam celowo.
Już zdążyłem się przekonać że to nie działa, ale mam kolejne pytanie.
W jaki sposób sprawdzić w kodzie czy wartość define jest równa np. 64 tak żeby całkiem pominąć część kodu jeśli tak nie jest ?
Mam na myśli coś takiego:
#if defined def1 //code #endif //code
Próbowałem napisać
#if defined def1 == 43
ale to w ten sposób nie działa
Napisano 30.11.2019 22:56
#define value 5 #if value > 5 // Code #endif
W taki sposób sprawdzana jest np. wersja amxx przy kompilacji (kompilator używa w headerze AMX_VERSION i AMX_VERSION_NUM), co daje nam możliwość zrobienia takiej operacji:
O co chodziło z kropką?
Użytkownik Wicked. edytował ten post 30.11.2019 23:06
Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.
Napisano 01.12.2019 13:05
O co chodziło z kropką?
Po prostu tak lepiej by mi define wyglądały.
0 użytkowników, 1 gości, 0 anonimowych