c++ - __COUNTER__ 宏是否可移植?

标签 c++ macros c-preprocessor

我有一段代码使用 __COUNTER__ 宏来为变量生成唯一的名称。

此代码可移植吗?我知道 GCC 和 MSVS 支持它。其他编译器呢?宏是由标准定义的吗(据我所知,在 C++14 之前它不是)。

最佳答案

这绝对标准。

这是一个编译器扩展(GNU C extensions)

The common predefined macros are GNU C extensions.

和一个Microsoft-specific one ,

Microsoft-Specific Predefined Macros:

__ COUNTER __

还支持clang作为语言扩展。

The standard doesn't mention it anywhere .

关于c++ - __COUNTER__ 宏是否可移植?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26160235/

相关文章:

c++ - 如何查看预处理后文件的外观?

c - #define 中的换行符和单双引号

java - 使用 Java/JNI 时 Linux 上的信号处理

c - 宏 _bnd(X,bnd) 是什么意思?

Python 3,如何设置 Visual Studio C++ 2015 编译器?

string - 我可以在 Rust 中将字符串转换为没有宏的枚举吗?

Emacs:有没有办法使用 Emacs 创建交互式脚本?

objective-c - @interface 中带有## 的宏,是什么意思?

c++ - 为什么从 C++11 中删除了 unary_function、binary_function?

c++ - 以在使用临时对象调用时生成编译器错误的方式重载方法