c++使用在定义和标识符中使用双下划线的C代码
C++ using C code using double underscores in defines and identifiers
我知道在c++中,标识符中的双下划线是为编译器保留的。我有一些C代码,在相应的头文件中具有类似的特征:
extern "C" {
#define HELLO__THERE 1
int hello__out__there( int );
}
我将在c++项目中使用这个头,并计划在c++中做一些事情,如:
if (HELLO__THERE == abc)
hello__out__there(foo);
这种行为在c++中是可接受的吗?
在c++ 03标准17.4.3.1.2 Global names
中,下划线的使用被定义为保留的:
的每个名称包含的双下划线(_ _)或以下划线后跟上-开头大小写字母(2.11)保留给实现以供任何使用。
被保留意味着它可能在任何符合标准的实现中使用,因此不建议使用它。
应该没问题,除非其中一个定义与编译器的定义有冲突。如果是这种情况,它可能是一个警告或错误(取决于你的编译器的配置),将有一个重复的符号。
希望有帮助。干杯!
方法调用将是好的,但为什么比较HELLO_THERE值abc?如果你要测试一个方法是否存在,我会用#ifdef…#endif,因为如果hello_out_there由于某种原因没有定义,这将是一个编译错误。
首先,我猜是下划线。其次,这样的标识符是保留的。这并不能阻止一个人不使用它。您可以使用它(直到没有命名冲突)。标识符中的双下划线为编译器
保留。
这种行为在c++中是可接受的吗?
是的。这是可以接受的。然而,可接受的代码和好的代码是有区别的。如果你遵循正确的编码准则,那么你的代码将是好的,并且是可以接受的。恕我直言,你应该参考一些好的编码标准在互联网上;这会对你有很大的帮助。
相关文章:
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 下划线不会与"发送输入"一起显示C++
- 在 QTextEdit C++ 中为特定行添加下划线
- 下面的C++代码将如何作为java类文件(名为Monstor)编写
- 导出函数中有多少下划线('_')(C++
- 有没有选项不自动所有前导下划线 _ 以导出 emscripten 中的函数?
- 删除数字并在C++中保留字符串的下划线
- c++ 函数中额外的下划线名称
- 在C 中,Haskell下划线有其他选择吗?
- 使用与号后跟下划线命名的变量是什么意思?
- C++20 中的严格别名规则是否允许标准 c++ unicode 字符和下划线类型之间"reinterpret
- 用下划线填充空格
- 使用 scons 在 windows 下编译C++代码,scons 添加"/Fo"作为编译选项
- std::vector 从一行代码清空到下一行代码
- 如何在不使用函数或类的情况下重复代码段,以便在C++中实现高性能循环
- 在Typedef结构中,下划线意味着什么
- 为什么非下划线名称保留给 UDL 的实现,而不是相反
- 代码的错误答案是在Java Camel案件和C 下划线标识符之间转换的错误答案
- C 代码如何在没有前导下划线的情况下调用外部函数
- c++使用在定义和标识符中使用双下划线的C代码