c++ - 与 DEBUG 宏混淆

标签 c++ macros

测试.cpp

#include <iostream>
#include "Class1.h"
#define DEBUG

int main() {
    checkAssert();
}

类1.h

#include <cassert>

#ifndef CLASS1_H_
#define CLASS1_H_

#if defined(DEBUG)

void checkAssert(){
    int number = 10;
    assert(number == 10);
}


#else

void checkAssert(){
    std::cout << "opps" << std::endl;
}

#endif /* DEBUG */
#endif /* CLASS1_H_ */

1.我在主文件中定义了调试。

2.Class1.h中的#if defined(DEBUG)是检查是否定义了DEBUG(据我理解)

我正在尝试这个程序来了解 DEBUG 宏在 C++ 中的工作原理,但每次我在屏幕上都有 opps 输出。 任何人都可以帮助我了解发生了什么。

最佳答案

您的 test.cpp 设置宏 after 头文件已经包含。那太晚了。您必须之前设置宏,包括头文件:

#define DEBUG
#include <Class1.h>

关于c++ - 与 DEBUG 宏混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39821051/

相关文章:

linux - 在内核模块中预定义一个宏

c - C宏有什么用?

c++ - 如何在命令行中编译和链接项目?

C++ 二进制搜索函数不打印

c++ - 从类型中减去是什么意思?

macros - 嵌套在宏内的 let 中的 if 子句未按预期工作

visual-studio - Visual Studio中的$(xxx)宏列表

visual-studio-2010 - __attribute__() 宏及其对基于 Visual Studio 2010 的项目的影响

c++ - 成员函数模板是否需要 "inline"

c++ - 如何在生产者-消费者场景中使用 Boost 条件变量?