2010-09-13 13 views
4

我有以下文件:a.h,a.c,b1.c,b2.c和在b1和b2我都有一些宏定义是相同的。正确的C重构

如果我在a.h中移动它们,还是将它们保留在正在使用的文件中更常见?在C中使用正确的方法是哪种方式?

回答

8

通常会将文件间共享的宏定义移动到这两个文件都包含的标题中。你应该确保你将该定义移动到的文件是一个合理的文件;不要将它移动到完全不相关的头部,因为它包含在两个文件中。如果b1.cb2.c都没有逻辑相关的头文件,也许你应该创建一个b.h在它们之间共享。

1

我想说,如果宏包含在两个代码文件中,将宏移动到a.h是没有问题的,前提是所有文件都包含a.h。

1

无论漂浮你的船。

如果a.h与这个宏有任何关系,那么这是个好地方。如果它被放在那里“,只是因为”a.h恰好已经包含在b1.c和b2.c中,这不是一个真正的设计问题,而是一个“方便”的问题。可以说这比复制它更好,但理想情况下,如果它与ah无关,也许你可以把它放在bh中(因为它涉及到b)或handymacros.h(因为它不是真的具体,但不会发生使用它) 。

1

如果宏定义不会在有价值的命名空间上跺脚,请将它们粘贴到最合适的标头中。如果这是一个h,就去做吧。这听起来像是更可能是b.h.

1

如果b1和b2实际上是指相同的东西(如果您更改了一个,则必须在另一个中更改它),那么标题是放置这些定义的适当位置。那么你只需要在一个地方改变它,并且不会意外忘记一个地方去改变它。