gpt4 book ai didi

c++ - 奇怪的编译错误 : catastrophic error: section length mismatch in array expression compilation aborted for shocktube. c

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:44:01 26 4
gpt4 key购买 nike

我在编译一段简单的代码时遇到了麻烦。详情如下:

变量声明:

double q_old[3][N], q_new[3][N], u[3][N], flux[3][N+1], fl[3][N+1], fr[3][N+1];

下面这行似乎是错误的来源:

fl[0][1:N+1] = u[1][0:N]*u[0][0:N]; // this does not work
fl[0][1:N] = u[1][0:N]*u[0][0:N]; // this works

错误:

shocktube.c(47): catastrophic error: section length mismatch in array expression
compilation aborted for shocktube.c (code 1)

我正在使用英特尔 icpc 编译器。 第一个 语句 起作用,但第二个起作用,这真的很奇怪,因为据我所知,第一个语句中 LHS 数组的大小将是 N(索引从 1 到N) 和 RHS 的大小也应该是 N(0 到 N-1),而在第二个语句中 LHS 的大小是 N-1。

谢谢,

最佳答案

Intel 数组部分表示法是 [start:length],而不是 [start:end]。因此,这条线

fl[0][1:N+1] = u[1][0:N]*u[0][0:N]; // this does not work

是无效的,因为您正在索引数组的末尾(具体来说,您要求 fl 数组中的索引 [1, N+2),其最后一个维度只有 N+1 个元素)。

错误可能应该更温和一些(“灾难性”不是我用来形容用户错误的术语),但这最终不是编译器的错。

关于c++ - 奇怪的编译错误 : catastrophic error: section length mismatch in array expression compilation aborted for shocktube. c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24252909/

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