Проблема с компиляцией макроса.
#1

Я себе уже весь мозг вынес, проблема в следующем, есть макрос вида:
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); \
если её закоментировать компиляяция проходит, но это строка мне нужна.

Есть у кого какие идеи из-за чего это
Reply
#2

1. меньше пробелов.
2. А не воспользоваца ли тебе функцией?
3. #define CreateCarsNearPlayers(%0,%1,%2,%3,%4); if(%2 == 666) \
Reply
#3

Пробелы тут не причем, уже наэксперементировался с этим, даже в строку делал.
Сейчас и так работает на функции, но разница в скорости вызова функции и просто кода, говорит сама за себя.
Это равносильные записи.

Я конечно могу все это без функций ручками прописать в местах вызова, но это будет очень длинная портянка, вот и хочется сделать макросом, чтобы по коду была одна строчка.
Reply
#4

и какой же выигрышь? 100 наносекунд?! оптимизатор хренов.
Reply
#5

В 1.5 - 2 раза, с учетом того что у меня этот код повторяется несколько раз, прирост существенный.
Reply
#6

Quote:
Originally Posted by Stepashka
View Post
В 1.5 - 2 раза, с учетом того что у меня этот код повторяется несколько раз, прирост существенный.
Сейчас полное выполнение скрипта со всеми итерациями занимает секунды 2.
Reply
#7

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

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

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


Forum Jump:


Users browsing this thread: 1 Guest(s)