使用常数编号初始化数组不起作用

Shi*_*bli 1 c++ arrays constants

当我使用常量nVar而不是数字时,我得到以下错误.

constants.h:

extern const unsigned int nVar;
Run Code Online (Sandbox Code Playgroud)

constants.cpp:

#include "constants.h"
const unsigned int nVar = 5;
Run Code Online (Sandbox Code Playgroud)

main.cpp中

#pragma once
#include "constants.h"
void foo(const double q[nVar])
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

编译:

数组常量不是']'标记之前的整数常量

预期')'在'之前','令牌

在'const'之前预期的nonqualified-id

Evg*_*hev 5

我认为这是因为编译器应该在编译时知道数组的大小,但在你的示例中,nVar的值只有在链接时才知道由于extern