const 修饰的对象具有局部属性,一般将其定义在.c文件中,其他文件想访问的话就在.c对应的.h中extern一下。
那么:
application.c 如下:
#include <iostream>
#include "application.h"
constexpr int N_TEST = 10;
int
func()
{
int arra[N_TEST];
std::cout << &N_TEST << std::endl;
return 0;
}
application.h定义如下:
extern constexpr int N_TEST;
struct test_2{
int arr[N_TEST];
};
编译报错:
test g++ ./test.cc ./application.cc -std=c++11
./test.cc:8:14: error: use of undeclared identifier 'N_TEST'
int arrt[N_TEST];
^
1 error generated.
➜ test
显示N_TEST未定义 将constexpr改为const也是报错。
问题:
1. 为什么会找不到定义
2. 此种情形N_TEST该怎么设计更合理,.h文件会使用其他.c中的const常量。