相关疑难解决方法(0)

在C++标识符中使用下划线有哪些规则?

在C++中通常用某种前缀命名成员变量来表示它们是成员变量而不是局部变量或参数.如果你来自MFC背景,你可能会使用m_foo.我myFoo偶尔也见过.

C#(或者可能只是.NET)似乎建议只使用下划线,如_foo.这是否允许C++标准?

c++ standards naming-conventions c++-faq

906
推荐指数
4
解决办法
24万
查看次数

你可以#define _min吗?

跟进Do preprocessor Defines replacement in `operator""_name`的评论中的讨论

根据cppreference,保留标识符包括

在全局命名空间中,以下划线开头的标识符。

据我所知,宏不是命名空间的一部分,因此据此#define _min不应使我的程序格式错误,无需诊断。但这样做真的可以吗?我是否可以保证兼容的编译器永远不会以可能被该宏破坏的方式使用该标识符?

c++ language-lawyer

11
推荐指数
1
解决办法
322
查看次数

是否允许编译器向标准头添加函数?

是否允许C编译器向标准头添加函数并仍然符合C标准?

我在某处读到了这个,但除了附件J.5外,我在标准中找不到任何参考:

包含任何可能导致严格符合程序无效的扩展会导致实现不一致.此类扩展的示例包括新关键字,标准标头中声明的额外库函数或名称不以下划线开头的预定义宏.

但是,附件J是信息性的而不是规范性的...所以它没有帮助.

所以我想知道一个符合标准的编译器是否可以在标准头文件中添加额外的功能?

例如,假设它将非标准itoa添加到stdlib.h中.

c standards header c99

7
推荐指数
2
解决办法
357
查看次数

在 C 标识符中使用下划线的规则是什么?

在 C(和其他语言)中,对变量和函数的名称使用前缀和后缀是很常见的。_x特别是,人们偶尔会在“正确的”标识符(例如_y变量等)之前或之后看到下划线的使用。_print但是,还有一种常识是避免以下划线开头的名称,以免与 C 标准发生冲突库实施。

那么,什么地方、什么地方可以使用下划线呢?

c syntax reserved-words language-lawyer

1
推荐指数
1
解决办法
762
查看次数