gpt4 book ai didi

c++ - XCode 预期不合格 ID TNT(模板数值工具包)

转载 作者:行者123 更新时间:2023-11-28 07:20:42 26 4
gpt4 key购买 nike

编译 TNT library 时即模板数值工具包,XCode 引发此错误:

tnt/tnt_array1d_utils.h:33:9: Expected unqualified-id

受影响的代码段:

namespace TNT
{


template <class T>
std::ostream& operator<<(std::ostream &s, const Array1D<T> &A)
{
int N=A.dim1(); /// <--- this line 33:9

#ifdef TNT_DEBUG
s << "addr: " << (void *) &A[0] << "\n";
#endif
s << N << "\n";
for (int j=0; j<N; j++)
{
s << A[j] << "\n";
}
s << "\n";

return s;
}

整个 TNT header here

尝试添加分号“;”到每个模板的末尾都不起作用:

namespace TNT
{


template <class T>
std::ostream& operator<<(std::ostream &s, const Array3D<T> &A)
{
int M=A.dim1();
int N=A.dim2();
int K=A.dim3();

s << M << " " << N << " " << K << "\n";

for (int i=0; i<M; i++)
{
for (int j=0; j<N; j++)
{
for (int k=0; k<K; k++)
s << A[i][j][k] << " ";
s << "\n";
}
s << "\n";
}


return s;
};

我在用

X代码5GNU++11libC++

也试过libstdc++

最佳答案

这是一个导致 error: expected unqualified-id with Clang(第 5 行)的最小示例:

#define N 

int main()
{
int N=3;
}

因为第 5 行被扩展为 int =3;(您还会收到一个错误,例如 #define N 10 但有一个额外的 注意:从宏“N”扩展)。

所以我敢打赌,您的代码在包含 header tnt_array1d_utils.h(可能在另一个 header 中,这是邪恶的)之前某处定义了一个宏 N,这似乎是一个非常糟糕的主意(一个 -字母宏,包括之前)。

(注意:它与缺少分号无关。在类定义(模板或“普通”)之后需要分号,但在像此处这样的函数定义之后不需要。另外,一般来说,我建议你不要t 修改来自外部库的 header 。)

关于c++ - XCode 预期不合格 ID TNT(模板数值工具包),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19506719/

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