假设您有一个名为 Add.h 的头文件。如果你有
,程序会链接吗?#ifndef ADD_H
#define Add_H
作为你的包括守卫?
编辑: 头文件
#include <iostream>
using namespace std;
#ifndef _RATIONAL_H
#define _Rational_H
class Rational
{
long long _p;
long long _q;
void simp();
public:
Rational();
Rational( long long P, long long Q = 1);
Rational( const Rational& );
};
#endif
答案 0 :(得分:7)
是的,宏在C ++中区分大小写。假设大多数编程语言中的所有内容都区分大小写,这可能是一个很好的经验法则。只有少数几种语言,您可以访问foo
和Foo
作为同一个变量(我在想Visual Basic - 不确定有多少其他语言)。
如果您不确定这样简单的事情,最简单的方法是使用您自己的编译器进行尝试:)
编辑:要知道它是否实际上工作,并且链接器不仅仅是忽略它,因为它不一定需要定义(可能会发生取决于ifdef逻辑/情况)尝试以下代码:
#include <iostream>
#define TEST
bool success = false;
#ifdef Test
bool success = true;
#endif
void main() {
std::cout << success << std::endl;
system("pause"); //Wait to press enter before closing
}
如果控制台显示数字1(std :: cout将true
转换为1并将false
转换为0,除非你告诉它不这样做)那么宏确实是的在强>敏感
更新:我刚刚尝试在Visual Studio 2015中编译上述代码,并确实输出0
。