c++ - C++ 中的宏问题

标签 c++

我正在尝试实现一些对其他人有用的代码。我使用的是 Visual Studio 2013,但我相信他们使用的是不同的编译器。代码中的所有内容都正常工作,除了一些宏。

一个例子:

#ifndef SAFE_DELETE
#define SAFE_DELETE(x) /
    if (x != NULL)        /
    {                    /
    delete x;     /
    x = NULL;         /
}
#endif

这里我得到错误expected a declaration,或者error C2059: syntax error : 'if'

不足为奇,我在尝试使用它时遇到错误:

SAFE_DELETE(*it); // "expected an expression"

我定义此宏的 namespace 与我的应用程序的其余部分共享,并且该宏未在其他任何地方使用。也没有任何其他语法错误。注释掉 include 和 SAFE_DELETE(*it); 生成可以编译的代码。此外,用宏中的代码替换宏调用也有效。

我尝试重新定义函数如下:

#ifndef SAFE_DELETE
#define SAFE_DELETE(x) /
    x = NULL;         /
#endif

这会产生错误 Error: this declaration has no storage class or type specifier。这让我相信,不知何故,这并没有在类里面被调用,但很明显是这样。

是什么导致了这个问题?此外,这怎么可能是为其他人编译的?

最佳答案

您需要反斜杠 (\) 来续行,而不是正斜杠 (/)。

关于c++ - C++ 中的宏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29111850/

相关文章:

C++ 运算符前置和后置递增

c++ - 适用于 C++ 的良好 IDE,例如具有完美自动完成功能的适用于 Windows 的 xcode?

c++ - 是否可以在 C++ 中使用小程序

java - 调试 Android Studio 2.2 CMake 与 NDK-Build

c++ - 为什么内部类*定义*不能使用它们的父类?

c++ - 我应该如何使我的分配器可重新绑定(bind)?我可以在保持其字段私有(private)的同时做到这一点吗?

c++ - 模板构造函数出现预期的不合格 ID 错误

c++ - 使用 DFS 在图中查找连通分量 (adjA)

c++ - 在 C++ 中保持对函数返回值的引用

c++ - 为什么这个整数会无限下降?