【发布时间】:2016-06-24 19:36:29
【问题描述】:
这就是我想要做的:
const char wav_folder[] = ".\\wav";
const char search_path[strlen(wav_folder) + 6];
但是 strlen 部分不允许我创建这个字符数组。这不是编译。为什么?
错误:
Error 1 error C2057: expected constant expression c:\users\hassan\documents\cpp\dir_search\dir_search\dir_search\source.cpp 15 1 dir_search
Error 2 error C2466: cannot allocate an array of constant size 0 c:\users\hassan\documents\cpp\dir_search\dir_search\dir_search\source.cpp 15 1 dir_search
Error 3 error C2734: 'search_path' : const object must be initialized if not extern c:\users\hassan\documents\cpp\dir_search\dir_search\dir_search\source.cpp 15 1 dir_search
Error 4 error C2133: 'search_path' : unknown size c:\users\hassan\documents\cpp\dir_search\dir_search\dir_search\source.cpp 15 1 dir_search
【问题讨论】:
-
编译器怎么说?
-
Strlen 是一个函数。我不确定最近的 C 编译器(用于 C11)是否会允许它,但 sizeof() 已经工作了几十年。请注意以 0 结尾。
-
好吧,我似乎从这个微不足道的例子中学到了一些新东西。我对这个错误感到非常困惑。是的,我是电子工程师,不习惯写这段代码。
-
您有兴趣接受您给出的 3 个答案之一吗?