![]() |
1
2
不,使用defines无法做到这一点。 您需要将这些值放入某个容器中,以便能够迭代这些值。 如果您只想存储值,可以使用STD::vector。 如果您想要同时拥有名称和值,可以使用STD::MAP。比如:
|
![]() |
2
3
以开头的行
常数可以这样定义,但是C++提供了更好的方法。例如,可以将它们包装在名称空间中,以避免名称冲突。
要获得关于类型定义后缀的更多解释,请查看 integer literals 和 floating point literals . 你可能还想继续读下去 constexpr 稍后,当您更舒适地使用C++来探索编译时常量表达式时。 |
![]() |
3
2
另一种方法是
生成
一些C++文件,包含你想要的内容。所以你需要设置
build
为此目的。你经常用一些
build automation
工具(如
GNU make
,
ninja
等等,你可以在需要时配置它来生成一些C++文件(例如在你的文件中添加几行)。
另请参见 this 回答相关问题(用c)。 您将生成一些包含类似
(你不想
或者你可能会产生一些
注意,在运行时生成C++代码可能比运行时更有效(因为构建时间)解决方案(例如)。
|
![]() |
4
1
宏由预处理器解析,处理器不知道(不能在代码中使用)。 如果要将名称与值关联,可以使用const map和constexpr表达式:
为了工作,你需要C++ 11(或以上)。 |
![]() |
5
1
与宏相比,首选常量变量
然后迭代它们,不需要名字,只要做
如果在多个位置迭代,可能需要为列表创建一个变量以避免重复。 |
![]() |
apetrai · 我应该如何假设算法使用哪种迭代器类别? 2 年前 |
![]() |
ridiculous_fish · std::是否保证短路? 3 年前 |
![]() |
Fabio · 在c中将指针赋给常数指针++ 3 年前 |
![]() |
johnco3 · 初始化固定C数组成员结构 7 年前 |
![]() |
mans · 为什么出现此错误:constexpr在此处无效 7 年前 |
![]() |
juztcode · 在C++中尝试捕获-创建了多少个对象 7 年前 |
![]() |
Steven Scott · 忽略元素的基于范围的for循环 7 年前 |