“定义ROBJECT\u EMBED\u LEN\u MAX ROBJECT\u EMBED\u LEN\u MAX”是什么意思?

“定义ROBJECT\u EMBED\u LEN\u MAX ROBJECT\u EMBED\u LEN\u MAX”是什么意思?,c,ruby,mri,C,Ruby,Mri,浏览MRI的代码,我发现这些#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 }; 这些定义的意义是什么?他们似乎什么都不做 该代码可以在ruby gith

浏览MRI的代码,我发现这些
#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
};
这些定义的意义是什么?他们似乎什么都不做

该代码可以在ruby github repo中的
ruby/include/ruby/ruby.h
文件中找到。

使用
#define
可以在编译时使用
#ifdef
测试定义是否存在。(无法在编译时测试枚举是否存在。)

由于C预处理器不进行递归替换,因此将符号定义为其本身实际上没有任何作用;符号本身被替换一次,然后正常地传递给编译器。

使用
#define
可以在编译时使用
#ifdef
测试定义是否存在。(无法在编译时测试枚举是否存在。)


由于C预处理器不进行递归替换,因此将符号定义为其本身实际上没有任何作用;符号本身被替换一次,然后正常地传递给编译器。

@AlexanderO'Mara不,它不是,这个定义似乎引用了枚举。它不是一个多行宏:重复的:可能重复的@AlexanderO'Mara不,它不是,此定义似乎引用了枚举。它不是多行宏:重复的:可能重复的