[問題] 有關mexfunction傳入結構變數的問題已回收
各位
想請教各位一個問題
最近開始使用mexfunction來在matlab中寫C code
但是我卻遇到一個問題
那就是如果我先在m file中
初始化兩個結構變數
a.a=int8(5);
a.b=int8(6);
b.a=int8(7);
b.b=int8(8);
然後,如果我讓b.a=a.a,
則將a整個結構變數傳至mexfunction中
重新給予
a.a=10;
a.b=11;
a.a與b.a竟然連動了
也就是處理出來的結果會是
a.a= 10
a.b= 11
b.a= 10
b.b= 8
今天一整天都在找這個bug,但是就我對mexfunction的瞭解,應該不會有問題才對
而且,實際上如果把a與b結構變數都傳入,看變數的address,其位置亦不同
所以應該不是指標指向的問題
想請各位幫幫我,謝謝
我把兩段檔案中的程式碼列在下方,麻煩大家幫幫我
test_address_problem.m
//////////
clc;
clear all;
close all;
mex test_address_problem_c_file.c;
a.a=int8(5);
a.b=int8(6);
b.a=int8(7);
b.b=int8(8);
a.a=b.a;
test_address_promblem_c_file(a);
fprintf('a.a= %g\n', a.a );
fprintf('a.b= %g\n', a.b );
fprintf('b.a= %g\n', b.a );
fprintf('b.b= %g\n', b.b );
///////////
test_address_problem_c_file.c
/////////////
#include "mex.h"
#include <string.h>
#define IN prhs[0] // 定義輸出變數
typedef struct _test_a{
char a;
char b;
}test_a,*ptest_a;
void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
{
int i, j, k;
mxArray *mx_a;
mxArray *mx_b;
char *c_a;
char *c_b;
test_a a;
mx_a=mxGetField(prhs[0], 0, "a");
c_a=mxGetPr(mx_a);
a.a=(*c_a);
mx_b=mxGetField(prhs[0], 0, "b");
c_b=mxGetPr(mx_b);
a.b=(*c_b);
a.a=10;
a.b=11;
(*c_a)=a.a;
(*c_b)=a.b;
}
/////////////
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.96.39.165