【发布时间】:2010-04-07 12:56:23
【问题描述】:
我在头文件中有这样的宏定义:
// header.h
ARRAY_SZ(a) = ((int) sizeof(a)/sizeof(a[0]));
这是在一些头文件中定义的,其中包含更多的头文件。
现在,我需要在某些源文件中使用此宏,而该源文件没有其他理由包含 header.h 或 header.h 中包含的任何其他头文件,所以我应该在源文件中重新定义宏还是简单地包含头文件header.h.
后一种方法会影响代码大小/编译时间(我认为是)还是运行时(我认为不是)?
您对此的建议!
【问题讨论】:
-
我认为这可能是一个意外(或什么),但万一不是 - 你不想要 '
=' 或 ';' 字符,你希望它是#define的一部分,例如:#define ARRAY_SZ(a) (/*the expression */) -
另外,请查看以下 SO 答案,以获得更复杂的宏版本,该版本具有更高的安全性(不太可能接受给出虚假结果的指针):stackoverflow.com/questions/1598773/…
标签: c++ c header-files