Что делает #define ROBJECT_EMBED_LEN_MAX ROBJECT_EMBED_LEN_MAX?

Просматривая код МРТ, я нашел эти #defineЯ не понимаю:

#define ROBJECT_EMBED_LEN_MAX ROBJECT_EMBED_LEN_MAX
#define ROBJECT_EMBED ROBJECT_EMBED
enum {
    ROBJECT_EMBED_LEN_MAX = 3,
    ROBJECT_EMBED = RUBY_FL_USER1,

    ROBJECT_ENUM_END
};

Какой смысл этих #defines? Кажется, они ничего не делают...

Этот код находится в ruby/include/ruby/ruby.h файл в рубиновом репозитории github.

1 ответ

#defineпозволяют проверить наличие определения во время компиляции, используя #ifdef, (Вы не можете проверить наличие перечисления во время компиляции.)

Поскольку препроцессор C не выполняет рекурсивное замещение, определение символа как самого себя фактически ничего не делает; символ заменяется один раз на себя, а затем обычно передается компилятору.

Другие вопросы по тегам