Visual C++说我的void函数需要一个返回值
我在我的mac上编译了这个,它工作得很好,但现在我试图用Visual c ++编译它(使用Windows 7)
继承人构建日志:
命令行创建临时文件"c:\ Users\Jonathan\Documents\Visual Studio 2008\Projects\magicsquare\Debug\RSP00000822923000.rsp",内容为[/ Od/D"WIN32"/ D"_DEBUG"/ D"_CONSOLE"/ D"_UNICODE"/ D"UNICODE"/ Gm/EHsc/RTC1/MDd/Fo"Debug \"/ Fd"Debug\vc90.pdb"/ W3/c/ZI/TP".\ magicsquare.cpp"]创建命令行"cl.exe @"c:\ Users\Jonathan\Documents\Visual Studio 2008\Projects\magicsquare\Debug\RSP00000822923000.rsp"/ nologo/errorReport:prompt"
输出窗口编译... magicsquare.cpp c:\ users\jonathan\documents\visual studio 2008\projects\magicsquare\magicsquare.cpp(224):错误C4716:'check':必须返回一个值
结果构建日志保存在"file:// c:\ Users\Jonathan\Documents\Visual Studio 2008\Projects\magicsquare\Debug\BuildLog.htm"magicsquare - 1个错误,0个警告(s)
我的函数头和函数
void **check (int **, int); void **check(int **matrix, int size) { //check if first row and last row are the same int rsum = 0, rsum2 = 0; bool rowflag = false; for(int i = 0; i < size; i++) { rsum += *(*(matrix + 0) +i); rsum2 += *(*(matrix + size - 1) +i); } //check if first column and last column are the same int csum = 0, csum2= 0; bool columnflag = false; for(int i = 0; i < size; i++) { csum += *(*(matrix + i) + 0); csum2 += *(*(matrix + i) + size - 1); } //check if diagonals are the same int diagonal = 0, diagonal2 = 0; bool diagonalflag = false; for(int i = 0; i < size; i++) diagonal += *(*(matrix + i) + i); int m = 0; int n = size - 1; while (m <= size - 1) { diagonal2 += *(*(matrix + m) + n); m++; n--; } //if row, column, diagonal are the same if (rsum == rsum2 && rsum2 == csum && csum == csum2 && csum2 == diagonal && diagonal == diagonal2) cout << "This is a Magic Square\n" << endl; else cout << "This is not a Magic Square\n" << endl; }
如果需要,请参阅整个代码 http://pastie.org/691402
你的函数返回一个(void**),它是一个指向void指针的指针.要创建void函数,只需将其声明为:
void check(int** matrix, int size);
您的原始代码将使用C语言编译,但不会在C++中编译.在Visual Studio 2008中尝试此操作.将文件扩展名重命名为.c而不是.cpp,以强制进行C编译而不是C++编译.它将编译并发出警告.但要注意,如果你曾经使用过check的返回值,那将是垃圾.
此链接有更多详细信息:http: //pdhut.50megs.com/vczone/articles/diffc/diffc.htm