工作溶液(GCC 4.9.0用C++ 11)
test.hpp
#define MAX_ROW 10
extern double posTime(const int row[MAX_ROW], int Flag, int n,double Time[]=0);
test1.cpp
#include "test.hpp"
double posTime( const int row[MAX_ROW],
int Flag,
int n,
double* eraseTime
)
{ eraseTime[0] = 2; eraseTime[1] = 3; return eraseTime[0]; }
TEST.CPP
#include <iostream>
#include "test.hpp"
double eraseTime[MAX_ROW] { 1, 2, 3, 4, 5, 6 ,7, 8, 9, 10 };
int main() {
double newB = posTime (0,0,0,eraseTime);
std::cout << "result: " << newB << std::endl;
for (auto v : eraseTime) {
std::cout << v << std::endl;
}
return 0;
}
编译命令: 克++ -std = C++ 11 -oe:\ TEST.EXE E:\ TEST.CPP E:\ test1.cpp
或double eraseTime[MAX_ROW]
,如果使用的是MAX_ROW在INT行我不明白为什么不在eraseTime(可能一些调用位置不在样本中限制此用途)或double* eraseTime
。
建议更改为使用std::array
(恒定大小)或std::vector
(动态大小)。
'&'是运营商的地址。你得到的类型是一个指向你的地址类型的指针。指向数组的指针与指向数组元素的指针没有任何相容性。 – chris
您要在'posTime'的签名中设置'double * eraseTime'或'double eraseTime []',而不是'double * eraseTime []'。 – hobbs
'type.h'中的原型和'a.cc'中的定义不一样。 “时间”和“eraseTime”没有声明相同。 –