Массиву не присваивается значение по-умолчанию

Сообщения
1,304
Реакции
2,303
Помог
57 раз(а)
Суть проблемы:
1) Есть энум
2) Есть массив, размер которого задан тайтлом энума
3) Ячейкам массива присвоено значение по-умолчанию через = { -1, ... }
4) Компилим плагин, декомпилим, и видим что засеталась только 1-ая ячейка, остальные по нулям.

Собственно, вопрос. Так и должно быть, или это баг компилятора (т.е. стоит зарепортить на гит)?

Исходный
Код:
#include <amxmodx>

enum _:CATEGORIES_ENUM {
    CATEGORY__FREE,
    CATEGORY__VIP,
    CATEGORY__PREMIUM,
    CATEGORY__GIRL,
    CATEGORY__HOLIDAY
}

#define INVALID_CATEGORY_POS -1

// если заюзать тут CATEGORIES_ENUM то сетается только первая ячейка, остальные по нулям. WTF?
new g_iFirstPos[ CATEGORIES_ENUM /*sizeof(CATEGORY_NAMES)*/ ] = { INVALID_CATEGORY_POS, ... }
new g_iFirstPos2[ 5 ] = { INVALID_CATEGORY_POS, ... }

public plugin_init() {
    for(new i; i < CATEGORIES_ENUM; i++) {
        log_to_file("ArrayDebug.log", "g_iFirstPos[%i]: %i", i, g_iFirstPos[i])
    }
    
    for(new i; i < CATEGORIES_ENUM; i++) {
        log_to_file("ArrayDebug.log", "g_iFirstPos2[%i]: %i", i, g_iFirstPos2[i])
    }
}
Декомпил
Код:
new MaxClients;
new MapName[64];
new NULL_STRING[1];
new Float:NULL_VECTOR[3];
new g_iFirstPos[5] =
{
    -1, 0, 0, 0, 0
};
new g_iFirstPos2[5] =
{
    -1, ...
};
public plugin_init()
{
    new i;
    while (i < 5)
    {
        log_to_file("ArrayDebug.log", "g_iFirstPos[%i]: %i", i, g_iFirstPos[i]);
        i++;
    }
    new i;
    while (i < 5)
    {
        log_to_file("ArrayDebug.log", "g_iFirstPos2[%i]: %i", i, g_iFirstPos2[i]);
        i++;
    }
    return 0;
}
 

Download all Attachments

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу