【发布时间】:2012-05-19 15:40:54
【问题描述】:
我正在开发一个具有许多功能的 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 未声明。
如何将闪电战阵列声明为全局? 谢谢 `
【问题讨论】:
标签: c++ global-variables blitz++