C ++中的宏/定义区分大小写吗?

时间:2015-10-20 03:45:50

标签: c++

假设您有一个名为 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

1 个答案:

答案 0 :(得分:7)

是的,宏在C ++中区分大小写。假设大多数编程语言中的所有内容都区分大小写,这可能是一个很好的经验法则。只有少数几种语言,您可以访问fooFoo作为同一个变量(我在想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