SA-MP Forums Archive
Проблема с компиляцией макроса. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Проблема с компиляцией макроса. (/showthread.php?tid=252006)



Проблема с компиляцией макроса. - 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
View Post
В 1.5 - 2 раза, с учетом того что у меня этот код повторяется несколько раз, прирост существенный.
Сейчас полное выполнение скрипта со всеми итерациями занимает секунды 2.


Re: Проблема с компиляцией макроса. - Romanius - 30.04.2011

дело твое, оптимизатор....


Re: Проблема с компиляцией макроса. - Diman777 - 05.02.2017

По поиску нужна была инфа по SetVehicleNumberPlate, и наткнулся на твой макрос. Ну судя потому, что не ответил - значит проблема не решилась твоя?)
Мне тоже интересно почему виснет. Кто в силах понять почему компилятор отказывается работать в данном случае?)


Re: Проблема с компиляцией макроса. - Stepashka - 06.02.2017

Господи, ну и некропостер.
Потому что макросы не предназначены для подобного.