0

如何将此宏转换为 cpp 样式 constexpr ?

#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "TAG", __VA_ARGS__)

像这样的东西:

constexpr auto LOGD(...){
    __android_log_print(ANDROID_LOG_DEBUG, "TAG", __VA_ARGS__);
}

显然第二个没有编译,我假设我必须更改语法但不知道如何。

4

2 回答 2

4

像这样的东西:

template<class... Args>
auto LOGD(const Args&... args) {
    return __android_log_print(ANDROID_LOG_DEBUG, "TAG", args...);
}

但为什么它应该constexpr是不清楚的。__android_log_print本身不是constexpr

于 2020-05-12T11:23:58.633 回答
1

根据 Evg 的回答,您还可以编写:

template<class... Args>
auto LOGD(Args&&... args) {
    return __android_log_print(ANDROID_LOG_DEBUG, "TAG", std::forward<Args>(args)...);
}

这支持完美转发。

于 2020-05-12T11:30:16.213 回答