![]() |
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
与宏相比,首选常量变量
然后迭代它们,不需要名字,只要做
如果在多个位置迭代,可能需要为列表创建一个变量以避免重复。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 4 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 5 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 5 月前 |