C 宏对定义中的令牌进行计数

C 宏对定义中的令牌进行计数,c,macros,count,token,C,Macros,Count,Token,我正在寻找一种方法来计算组成#define的令牌的数量。 例如,考虑下面的代码行: #define DAYS_OF_WEEK MON TUE WED THU FRI SAT SUN class DaysOfWeek { public: static const int count = COUNT(DAYS_OF_WEEK); }; 这个例子非常简单,COUNT是为了让您了解这个问题而发明的。 目前,我不知道有哪个C宏返回7来代替COUNT() 感谢您的帮助所以您想询问如何计算字符

我正在寻找一种方法来计算组成
#define
的令牌的数量。 例如,考虑下面的代码行:

 #define DAYS_OF_WEEK MON TUE WED THU FRI SAT SUN

 class DaysOfWeek
 {
 public:
 static const int count = COUNT(DAYS_OF_WEEK);
 };
这个例子非常简单,COUNT是为了让您了解这个问题而发明的。 目前,我不知道有哪个C宏返回7来代替COUNT()


感谢您的帮助

所以您想询问如何计算字符串中的字数?这不能用宏来完成。可以接近(使用不同的语法——如果用逗号分隔每个标记),但这会导致一些非常难看的预处理器代码。按照@devnull的建议,将定义转换为字符串并在运行时计算单词可能更好。c?C++?我如何在其他地方使用它<代码>#定义第7周的计数天数为什么不使用
枚举{周一、周二、周三、周四、周五、周六、周日、计数}?@user694733不,太易读,太有意义了。