小编dan*_*dan的帖子

从C++到C的值传递的复数似乎不适用于powerpc

当我将复杂的float(complex.h)从c ++调用者传递到ac库时,在32位power pc上运行时,该值无法正确传递.当我发现这个问题时,我正在使用两个不同的开源软件库.我把它分离到C++将复杂值类型传递给纯C类型函数的边界.我写了一些简单的代码来演示它.

#ifndef MMYLIB_3A8726C1_H
#define MMYLIB_3A8726C1_H

typedef struct aComplexStructure {
    float r;
    float i;
} myComplex_t;

#ifdef __cplusplus
#include <complex>
extern "C" {
    void procWithComplex(float a, std::complex<float> *pb, std::complex<float> c, float d);
    void procWithStruct(float a, myComplex_t *pb, myComplex_t c, float d);
}

#else  /* __cplusplus */

#include <complex.h>
void procWithComplex(float a, float complex *pb, float complex c, float d);
void procWithStruct(float a, myComplex_t *pb, myComplex_t c, float d);

#endif

#endif /* MYLIB_3A8726C1_H */
Run Code Online (Sandbox Code Playgroud)

源C文件如下

#include <stdio.h>
#include "myLib.h"

void …
Run Code Online (Sandbox Code Playgroud)

c c++ powerpc pass-by-value complex-numbers

11
推荐指数
1
解决办法
1065
查看次数

标签 统计

c ×1

c++ ×1

complex-numbers ×1

pass-by-value ×1

powerpc ×1