Проблема с компиляцией макроса. -
Stepashka - 29.04.2011
Я себе уже весь мозг вынес, проблема в следующем, есть макрос вида:
pawn Code:
#define CreateCarsNearPlayers(%0,%1,%2,%3,%4); \
if(%2 == 666) \
{ \
%2 = otherVehicle[random(otherVehicleCount)]; \
} \
else \
{ \
switch(%2) \
{ \
case publicServiceVehicles: \
{ \
randcol = -1; \
randcol2 = -1; \
} \
} \
} \
if(%3 != INVALID_PLAYER_ID && %1 == -1) \
{ \
%1 = CreateVehicle(%2,%0,randcol,randcol2,never); \
SetVehicleNumberPlate(%1,%4); \
} \
else if(%1 != -1) \
{ \
DestroyVehicle(%1); \
%1 = -1; \
}
Проблема в том что в таком виде он не компилируется, компилятор тупо виснет, кстати забавно, юзает ровно 50% проца но система не виснет, но сейчас не об этом.
Методом исключения я нашел в чем проблема, она в строке
pawn Code:
%1 = CreateVehicle(%2,%0,randcol,randcol2,never); \
если её закоментировать компиляяция проходит, но это строка мне нужна.
Есть у кого какие идеи из-за чего это
Re: Проблема с компилцией макроса. -
Romanius - 29.04.2011
1. меньше пробелов.
2. А не воспользоваца ли тебе функцией?
3. #define CreateCarsNearPlayers(%0,%1,%2,%3,%4); if(%2 == 666) \
Re: Проблема с компилцией макроса. -
Stepashka - 30.04.2011
Пробелы тут не причем, уже наэксперементировался с этим, даже в строку делал.
Сейчас и так работает на функции, но разница в скорости вызова функции и просто кода, говорит сама за себя.
Это равносильные записи.
Я конечно могу все это без функций ручками прописать в местах вызова, но это будет очень длинная портянка, вот и хочется сделать макросом, чтобы по коду была одна строчка.
Re: Проблема с компиляцией макроса. -
Romanius - 30.04.2011
и какой же выигрышь? 100 наносекунд?! оптимизатор хренов.
Re: Проблема с компиляцией макроса. -
Stepashka - 30.04.2011
В 1.5 - 2 раза, с учетом того что у меня этот код повторяется несколько раз, прирост существенный.
Re: Проблема с компиляцией макроса. -
Stepashka - 30.04.2011
Quote:
Originally Posted by Stepashka
В 1.5 - 2 раза, с учетом того что у меня этот код повторяется несколько раз, прирост существенный.
|
Сейчас полное выполнение скрипта со всеми итерациями занимает секунды 2.
Re: Проблема с компиляцией макроса. -
Romanius - 30.04.2011
дело твое, оптимизатор....
Re: Проблема с компиляцией макроса. -
Diman777 - 05.02.2017
По поиску нужна была инфа по
SetVehicleNumberPlate, и наткнулся на твой макрос. Ну судя потому, что не ответил - значит проблема не решилась твоя?)
Мне тоже интересно почему виснет. Кто в силах понять почему компилятор отказывается работать в данном случае?)
Re: Проблема с компиляцией макроса. -
Stepashka - 06.02.2017
Господи, ну и некропостер.
Потому что макросы не предназначены для подобного.