#定义c-预处理器常量..我做错了什么
#define c-preprocessor constants ... what did I wrong?
我再次尝试使用arduino并创建一个小模块,只是为了在cpp-sintaxe中获得流畅性。
我正在尝试使用静态方法创建一个实用程序模块,并使用标头常量来决定是否必须打印调试消息。
但即使使用#ifndef来避免重复,我也没有使用
在模块DataMattersUtil中,我使用#ifndef将标头常量DATA_MATTERS_DEBUG设置为false以避免重复。但是,当我执行此代码时,消息不会在串行监视器上打印,因为常量总是false,甚至在第一个执行的模块DataMattersRunner.ino上将其设置为true。
文件:DataMattersRunner.ino
#define DATA_MATTERS_DEBUG true
#include <DataMattersRunner.h>
DataMattersRunner runner;
void setup() {
runner.setup();
}
void loop() { }
文件:DataMattersRunner.cpp
#include <DataMattersUtil.h>
void DataMattersRunner::setup() {
DataMattersUtil::debug("Running ...");
}
文件:DataMattersRunner.cpp
#include <DataMattersUtil.h>
void DataMattersRunner::setup() {
DataMattersUtil::debug("Running ...");
}
文件:DataMattersUtil.h
#ifndef DATA_MATTERS_DEBUG
#define DATA_MATTERS_DEBUG false
#endif
#ifndef DataMattersUtil_h
#define DataMattersUtil_h
class DataMattersUtil {
public:
static void debug(String message);
};
void DataMattersUtil::debug(String message) {
if(DATA_MATTERS_DEBUG) {
Serial.println(message);
}
}
#endif
由于DataMattersUtil.h
包含在多个编译单元中,您必须在所有编译单元中定义DATA_MATTERS_DEBUG
。
与其在all#include <DataMattersUtil.h>
之前添加#define DATA_MATTERS_DEBUG
,不如使用编译器标志。对于gcc
和clang
,它将是-DDATA_MATTERS_DEBUG
您的问题是,每个cpp文件都在不同的编译单元中处理,并且您在DataMattersRunner.ino中只定义了DATA_MATTERS_DEBUG
到true
。因为您的其他文件在不同的汇编单元中,所以它们在DataMatters Runner.no中看不到定义。
对您来说,最好的解决方案可能是使用编译器选项提供DATA_MATTERS_DEBUG
。我没有Arduino的经验,但有了gcc,你可以做这样的事情:
g++ -c DataMattersRunner.cpp -DDATA_MATTERS_DEBUG=true
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- .h 和.cpp文件分离时出错,但仅使用 .h 文件时没有错误.我做错了什么?
- 我的C++线程做错了什么?
- 谁能告诉我我用 getline 做错了什么 (cpp) 格式
- 没有输出的合并排序我做错了什么?
- 我正在尝试使用 while 循环从字符串中删除字母,直到没有字母。我在这里做错了什么?
- 在C++中使用 AKS 素数测试计算双胞胎素数 我做错了什么?
- 我一直试图弄清楚我在这个链表程序中做错了什么
- 我正在尝试学习如何在 c++ 中传递指针,但出现错误:没有用于调用"test"的匹配函数。我做错了什么?
- FFMPEG,C++,内存泄漏,我做错了什么?
- 我做错了什么?反向字符串 C++
- 我在这个课上做错了什么?
- 创建整数的 2D 数组,该数组将使用两个函数用随机数填充矩阵.我做错了什么?
- 在不使用内置库函数的情况下添加字符串,我做错了什么?
- 我做错了什么?GetDiskFreeSpaceExA的功能根本不起作用
- 我在查找和字符串上做错了什么?
- 我正在尝试用 c++ 制作一个日志记录框架,但信息没有传递给记录器的子组件,我做错了什么?
- 我在尝试将多个值push_back向量时出错。我做错了什么?
- 插入排序:我做错了什么?