gpt4 book ai didi

c++ - g++ 与 Visual Studio

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:29 24 4
gpt4 key购买 nike

你能告诉我为什么 visual studio 编译这段代码(在消息的末尾)很好但是 g++ 给我一个错误:

chapter8_1.cpp:97:50: error: macro "minor" passed 3 arguments, but takes just 1
chapter8_1.cpp:136:36: error: macro "minor" passed 3 arguments, but takes just 1
chapter8_1.cpp:97:11: error: function definition does not declare parameters
chapter8_1.cpp: In member function ‘double Matrices::determinant(double**, int)’:
chapter8_1.cpp:136:17: error: ‘minor’ was not declared in this scope

现在这两个函数在 struct 中,但如果我在没有 struct 的情况下编译它们(只是独立的函数),那么 g++ 不会给我任何错误并且程序运行正常.该程序旨在计算任何方阵的行列式。

代码:

struct Matrices
{
.......

double **minor(double **matrix, int dim, int row) // row stands for the number of column that we are expanding by
{
int dim2 =--dim;
double **minor2;
minor2=new double*[dim2]; // creates minor matrix
for(int i=0; i<dim2; ++i)
minor2[i]=new double[dim2];

for(int hhh=0; hhh<dim2; ++hhh)
{
int bbb=0;
for(int aaa=0; aaa<dim2+1; ++aaa) // initializing the minor matrix
{

if (aaa==row)
continue;
else
{
minor2[hhh][bbb]=matrix[hhh+1][aaa];
++bbb;
}
}
}
return minor2;
}

double determinant(double **mat, int dim)
{
double det=0;
if(dim==1)
det=mat[0][0];
if(dim==2)
det=mat[0][0]*mat[1][1]-mat[0][1]*mat[1][0];
else
{
double ***setOFmat; // pointer that points to minors
setOFmat=new double**[dim];
for (int ddd=0; ddd<dim; ++ddd) // ddd represents here the number of column we are expanding by
setOFmat[ddd]=minor(mat, dim, ddd);
for (int ddd=0; ddd<dim; ++ddd) // ddd srepresents the same here
{

det= det + pow(-1.0,ddd)*mat[0][ddd]*determinant(setOFmat[ddd], dim-1); // actual formula that calculates the determinant

}
}
return det;
}

最佳答案

您应该更仔细地阅读错误消息:-)

chapter8_1.cpp:97:50: error: macro "minor" passed 3 arguments, but takes just 1

这意味着 gcc 认为 minor 是一些描述的宏,所以该行的预处理:

double **minor(double **matrix, int dim, int row)

可能会很麻烦。

我会用 gcc -E 编译它以获得预处理器输出,这样你就可以知道:

  • 它是如何破坏你的线路的;和
  • 希望在定义 minor 宏的地方。

关于c++ - g++ 与 Visual Studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13512483/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com