【发布时间】:2011-03-20 18:31:59
【问题描述】:
这个问题更多地属于最佳实践和用于分发的干净/安全代码的类别。
我正在开发一个 C++ 数学库,用于我的作品集,并在我大学的最后两个学期使用。我希望这个库非常易于使用,并尽量减少与现有代码冲突的可能性。
为了便于阅读,我将 TEMP_T 定义为类的模板,位于每个头文件(math/matrix/vec/quaternion)的顶部。如下所示:
#ifdef TEMP_T
#define UNDEF_TEMP_T TEMP_T // Used to reset any other definitions later.
#endif // TEMP_T
#define TEMP_T template<class T> // Used to make the code more readable.
稍后,在文件末尾,如果需要,我会重置预先存在的定义:
#undef TEMP_T // Get rid of our definition.
#ifdef UNDEF_TEMP_T
#define TEMP_T UNDEF_TEMP_T // Reset the previous definition, if it existed.
#undef UNDEF_TEMP_T
#endif // UNDEF_TEMP_T
我的问题:这是否会成功地创建一个对文件可见的定义,并且单独的文件?如果是这样,这就是你将如何去完成这样的事情吗?如果没有,您能不能给我一些关于您做事方式背后的理性的见解?
【问题讨论】:
-
就像你在评论中所说的,你不需要这个 TEMP_T 宏。它不会增加可读性。事实上它减少了它,因为你需要知道它的定义才能理解它。
标签: c++ windows templates visual-studio-2008 c-preprocessor