【发布时间】:2017-07-21 13:15:49
【问题描述】:
我想定义一个 ASCII 空白字符串(字符数组),与一些静态 const int 或宏完全一样。我希望它发生在编译时,而不是运行时。
例如,如果
static const int numBlanks = 5
然后
char foo[] = " "
(五个空格)
如果
numBlanks = 3
然后
char foo[] = " "
(三个空格)
等等。 (为什么?我想将它与strstr() 一起使用来定位至少为numBlanks 的序列,而numBlanks 可在编译时设置。)
是的,您可以使用 new、memset() 和 /0,但我想在编译时执行一次,而不是在运行时一次又一次地执行。
是的,我可以接近
char foo[] = " ";
foo[numBlanks] = '\0';
以及注释或assert() 以确保numBlanks 永远不会大于foo 的编译长度。
但是我可以在编译时完成这一切吗?定义一个长度为 numBlanks 的所有空格的 char 数组,其中 numBlanks 是 C++ 静态 const int 还是宏?
【问题讨论】:
-
您可以使用配置脚本创建一个头文件来定义具有所需长度的变量吗?
-
感谢@Barmar 进行代码编辑。另外,我没有提到 numBlanks 总是相当小,比如说在 2 到 10 的范围内。是的,我想我可以,但我不知道它是否值得这么多的努力和复杂性。
-
您可以使用 C 预处理器。见stackoverflow.com/questions/8551418/…
标签: c++ arrays variables char compile-time