c++ - 在许多类中使用具有相同标识符的 #define 会导致 "error: <ID> redefined"

标签 c++ logging android-ndk include header-files

我正在使用帮助程序类以一种简单的方式在 android ndk 中记录消息。它是这样工作的:

LOGE("ClassTag", "Message");

因为我不想每次都想记录一些东西时手动编写标签,所以我为每个类定义定义了一个 TAG 常量:

#define  TAG    "Class1Tag"

然后我可以通过以下方式登录:

LOGE(TAG, "Message");

当一个定义了 TAG 常量的类包含另一个声明了相同 TAG 常量的类时,问题就出现了。然后弹出如下编译错误:

error: "TAG" redefined

我怎样才能摆脱重新定义而不必为每个#define 使用不同的标识符?

最佳答案

听起来你在头文件中定义了 TAG 值。为了让这类东西正常工作,你应该只在实现文件中定义它。因为实现文件没有包含在其他文件中,所以不会有重定义。

这意味着日志语句只能出现在实现文件中。

关于c++ - 在许多类中使用具有相同标识符的 #define 会导致 "error: <ID> redefined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15326033/

相关文章:

linux - Cron 压缩文件

java - android - 如何获取发生异常的类和方法名称

C++,科学记数法,格式数字

c++ - 创建 const 迭代器和非 const 迭代器

php - 最佳实践,PHP,每天跟踪数百万次展示

android - 为什么 LTO 在 armv8a NDK 构建中引入新的 DT 标志 TLSDESC_PLT 和 TLSDESC_GOT

android - 使用 OpenCV 3.1 在 Android Studio 1.5 中开发原生 C++ 应用程序

android - 如何从 native 代码强制打开 Android 软键盘?

c++ - tf.cond 未按预期运行

c++ - 如何通过在它之前编写的预处理器定义来获取函数签名?