在移植到ARM

时间:2017-09-13 09:50:25

标签: compiler-errors compiler-optimization

我是ARM平台的新手。

下面的代码已被用于函数中,用于找出一些复数样本的共轭乘法并将其滑动到某些样本中。

此代码在linux 12.04版本的本机编译器中正常工作。在ARM中运行相同的代码时,它不会执行该功能。它只是从代码运行中退出。

#include<stdio.h>

int main()
{
    float aa[12]={1,1,1,1,1,1,1,1,1,1,1,1};
    float *x=aa,*y=x+6,real=0,imag=0;

    fn_ComplexMultiply_addthem(x,y,6,&real,&imag);

    printf("real value = %f\n",real);
    printf("real value = %f\n",imag);
}

void fn_ComplexMultiply_addthem(float *x, float *y, float len, float *re, float *im)
{
    int j;

    for( j=0; j<len; j+=2)
    {
        *re += (x[j]*(y[j]));
        *re -= (x[j+1]*(-y[j+1]));
        *im += (x[j]*(-y[j+1]));
        *im += (x[j+1]*(y[j]));
    }
}

我无法理解它的原因。每个指针指向一些值,然后它应该给我结果,无论什么可能是正确的。相反,它只是退出模拟。

它会像堆栈等内存一样出现问题吗? 请帮我调试一下。

1 个答案:

答案 0 :(得分:5)

程序无效,因为在声明fn_ComplexMultiply_addthem之前使用float len,并且隐式声明与实际定义不匹配。

此外,len毫无意义。我们不使用浮点数进行计数。

int更改为main并在void fn_ComplexMultiply_addthem(float *x, float *y, int len, float *re, float *im); 之前添加函数声明:

-Wall -Werror

始终启用编译器警告并将其视为错误(gcc和clang为<script> $("#table1").bootstrapTable({ columns: [ { field: 'fn', title: "First Name" }, { field: 'ln', title: "Last Name" }, { field: 'gender', title: "Gender" }, { field: 'totalmarks', title: "Total Marks" }, { field: "totalcourses", title: "Total Courses Enrolled In" }, {field: 'links', title: "Actions"} ], data: [ @foreach (var item in Model) { int total = ((StudentsController)this.ViewContext.Controller).totc(@item.Id); @: { fn: '@item.FirstName', ln: '@item.LastName', gender: '@item.Gender', totalmarks: '@item.TotalMarks', totalcourses: '@total', @: links: '<input type="button" value="Edit" onclick="window.location.href='@Url.Action("Edit","Students")';" />' } ] }); )。