C在不同的标题中定义具有相同名称的宏?

时间:2017-03-20 08:22:50

标签: c macros c-preprocessor

是否可以在不同的头文件中定义具有相同名称的宏 例如,在头文件a.h和b.h中 我们都定义了具有相同标识符的宏

2 个答案:

答案 0 :(得分:0)

只要两个文件不在一起,就没有任何问题 如果您想要包含这两个文件,请确保在包含第二个文件之前取消此重复符号。

答案 1 :(得分:-2)

如果你不同时在同一个文件中同时包含a.h和b.h,那么你就是好人。编译器甚至不会抱怨。 如果确实声明两个include都在同一个文件中,编译器将引发一个Warning并将采用最新的include声明值,因为编译器必须做出选择。 EG:

#define foo 1(a.h)

#define foo 2(b.h)

在foo.c中:

#include "a.h"
#include "b.h"

foo将给出最后包含的值2。

如果您仍想使用它,请不要忘记 undef 其中一个副本。

但是这种操作非常糟糕,因为您的代码会变得不太可读 会有未定义的行为 他们很可能会甚至迷失在你自己的代码中