如果我在两个文件中都使用它们。 在c ++中使用术语“宏”它只是在预编译阶段发生的替换机制(对c ++结构一无所知)。
这是我应该在两个文件中定义宏(#define)还是不需要这样做的原因,或者我错过了什么。
答案 0 :(得分:5)
在.h文件中定义宏,然后在.cpp文件中包含该.h文件就足够了。
答案 1 :(得分:2)
首先假设一个简单的案例。你有.c文件使用.h文件:
如果你有常数,请说:#define KM_PER_MINUTE 3
。如果.h文件中的任何函数使用此常量,请将此#define放在.h文件中:
Inside Car.h:
#ifndef CAR_H
#define CAR_H
...
#define KM_PER_MINUTE 3
...
int calculate_total_KM(int minute)
{
return minute * KM_PER_MINUTE;
}
...
#endif
另一方面,如果只在.cpp文件中使用此常量,请将此#define放在.cpp文件中:
Inside Car.cpp:
#define KM_PER_MINUTE 3
...
int calculate_total_KM(int minute)
{
return minute * KM_PER_MINUTE;
}
...
答案 2 :(得分:0)
如果你把它放在#ifndef
中那么无关紧要,它只会被包含一次(第一次出现)。我没有,那么当源中定义的宏以及包含宏的头部时,您将收到已定义宏的警告。
BTW:还有第三名,您可以在makefile或项目设置中声明宏。
答案 3 :(得分:0)
#define指令将标识符定义为宏,指示编译器用替换列表替换所有连续出现的标识符,可以选择另外处理。 如果标识符已被定义为任何类型的宏,则除非定义相同,否则程序格式不正确。
我想这完全回答了你的问题 不言而喻,您可以在.h文件中定义宏,然后将其包含在您需要该宏的任何位置。
答案 4 :(得分:0)
'在两个文件中定义宏(#define)导致重定义错误或警告。 这不好。它可能导致程序编译错误(好事)或运行时错误(可怕的事情)。