将Python函数与yield转换为C风格的函数

时间:2014-09-18 13:21:29

标签: python c++ generator yield code-translation

我在使用生成器的python中有以下函数,我不知道如何转换为C风格的代码:

    def terms():
        t = 1
        yield t
        r = 1/z
        k = 1
        while k <= n:
            t = t*(n+1-k)/k*r
            if not (k > 2 and k & 1):
                yield t*my_number(k)
            k += 1

1 个答案:

答案 0 :(得分:1)

使用结构来保持函数的状态(即局部变量)。 然后编写两个函数(选择更好的名称),您还必须重写术语的调用者以保持结构实例可用。

struct terms_locals{int k; ...}

struct terms_locals terms_init() {
    return initialized_struct;}

double terms_next(struct terms_locals *loc){
    compute yield term;
    update *loc;
    return yield term;}