在C中使用八度内置函数

时间:2015-03-10 08:46:25

标签: c++ c octave built-in

我被告知要用八度音阶编译这个程序。我在使用Octave之前已经成功编译了一个简单的C程序,但对于这个,我已经尝试过,我不知道如何在C中编译它,即使我试图将一些C ++语言改为C语言。

 #include <iostream>

 #include <octave/oct.h>

 int main (void)

 {
 std::cout << "Hello Octave world!\n";

 int n = 2;

 Matrix a_matrix = Matrix (n, n);

 for (octave_idx_type i = 0; i < n; i++)

 for (octave_idx_type j = 0; j < n; j++)

 a_matrix(i,j) = (i + 1) * 10 + (j + 1);

 std::cout << a_matrix;

 return 0;
 }

那么这个问题有什么解决方案吗? 非常感谢,对于我在帖子中发生的任何错误表示抱歉,因为我在使用octave和本论坛时都很新。

编辑(在Alter Mann的回答之后):

所以这是我的C程序代码

#include <stdio.h>

int main(void)
{
        printf("Hello Octave World!");

    int n=2;
    Matrix a_matrix = Matrix (n, n);

    for (octave_idx_type i=0; i<n; i++)
    {
            for (octave_idx_type j=0; j<n; j++)
            {
                    a_matrix(i,j) = (i+1) * 10 + (j+1);
            }

            printf ("%d", &a_matrix);
    }
    return 0;
}

但是我收到了这个错误

  

standalone.c:在函数'main'中:
  standalone.c:8:错误:'Matrix'未声明(首次使用此功能)
  standalone.c:8:错误:(每个未声明的标识符仅报告一次   standalone.c:8:错误:对于它出现的每个函数。)
  standalone.c:8:错误:在'a_matrix'之前预期';'   standalone.c:10:错误:'octave_idx_type'未声明(首次使用此功能)
  standalone.c:10:错误:预期';'在'i'之前   standalone.c:10:错误:'我'未申报(首次使用此功能)
  standalone.c:12:错误:预期';'在'j'之前   standalone.c:12:错误:'j'未声明(首次使用此功能)
  standalone.c:14:警告:隐式声明函数'a_matrix'
  standalone.c:17:错误:'a_matrix'未声明(首次在此函数中使用)

1 个答案:

答案 0 :(得分:1)

#include <iostream>

应该是

#include <stdio.h>

std::cout << a_matrix;

应该是

printf("%d", a_matrix);

但是<octave/oct.h>不能用于C:

A.1.1 Getting Started with Oct-Files

  

第一个关键线是#include   提供C ++ oct文件所需的大多数定义。注意   octave / oct.h是一个C ++标题,不能直接#include'ed   在C源文件中,也不是任何其他语言。

Alternative

  

界面以支持C ++,C和C语言为中心   Fortran语言。 Octave本身是用C ++编写的,可以调用外部C ++ / C.   代码通过其原生的oct文件接口。 C语言也是   通过mex-file接口支持兼容性   MATLAB。 Fortran代码最容易通过oct文件到达   接口