工作溶液(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」沒有聲明相同。 –