我正在开发一个具有许多功能的 C++ 项目。我不想将它们写在主程序中,而是想为每个函数编写一个单独的 .cpp 文件。这些函数中的大多数都将作用于某些数组,因此我希望将这些数组设为全局。因此,我在一个名为 globals.cpp 的单独 .cpp 文件中声明了所有数组,并将它们放入以 extern 为前缀的 globals.h 文件中。我像往常一样编写了函数和主程序,但是当我编译时,我得到了一个
这是我所拥有的:
//globals.cpp
#include <iostream>
#include <blitz/blitz.h>
#include <blitz/array.h>
#include "prototype.h"
#include "globals.h"
BZ_USING_NAMESPACE(blitz)
Array<double,2> A(5,5);
在 globals.h 文件中我有
#ifndef GLOBALS_H
#define GLOBALS_H
extern Array<double,2> A(5,5);
#endif
然后我有一个函数add.cpp,例如
#include <iostream>
#include <blitz/blitz.h>
#include <blitz/array.h>
#include "prototype.h"
#include "globals.h"
BZ_USING_NAMESPACE(blitz)
void add.cpp(){
for(int i=0;i<5;i++){
A(i,i)=i*i;
}
}
我显然将它包含在prototype.h文件中
#ifndef GLOBALS_H
#define GLOBALS_H
void add();
#endif
最后我有了主程序 mainprog.c
#include <iostream>
#include <blitz/blitz.h>
#include <blitz/array.h>
#include "prototype.h"
#include "globals.h"
BZ_USING_NAMESPACE(blitz)
int main(){
add();
cout<<A<<endl;
return 0;
}
但是,当我编译时,我收到错误 `globals.h:6:8: error: 'Array' does not name a type
然后 add.cpp 函数中出现错误,说明未声明错误 A。
如何将闪电战阵列声明为全局?谢谢`