小编Spi*_*ike的帖子

使用goto跳转到内部或兄弟范围

是否允许跳转到内部范围或兄弟范围内的标签?如果是这样,是否允许使用在该范围内声明的变量?

考虑以下代码:

int cond(void);
void use(int);

void foo() 
{
    {
        int y = 2;
        label:
        use(y);
    }

    {
        int z = 3;
        use(z);

        /* jump to sibling scope: */ if(cond()) goto label;
    }

    /* jump to inner scope: */ if(cond()) goto label;
}
Run Code Online (Sandbox Code Playgroud)

这些goto合法吗?

如果是这样,y当我跳转label并保持分配给它的最后一个值(2)时,保证存在?

或者允许编译器假设y在超出范围后不会被使用,这意味着单个内存位置可以用于yz

如果此代码的行为未定义,我如何让GCC发出警告?

c scope goto

11
推荐指数
2
解决办法
498
查看次数

如何在 Backbone 模型上手动触发“change”事件?

我正在尝试手动触发change属于集合的 Backbone 模型上的事件。这是一个最小的例子:( JSFiddle )

var PersonModel = Backbone.Model.extend({});

var PersonCollection = Backbone.Collection.extend({
    model: PersonModel
});

var person = new PersonModel({ name: 'Spike' });
var people = new PersonCollection([person]);

person.trigger('change'); // throws error
console.log('triggered event successfully');
Run Code Online (Sandbox Code Playgroud)

但当我触发事件时,出现以下错误:(在 JSFiddle 中,打开 Javascipt 控制台查看完整错误)

Uncaught TypeError: Cannot read property 'previousAttributes' of undefined
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

(我这样做的原因是,在实际代码中,模型有一个集合 - 例如person.things = new ThingCollection();- 我想在其集合更改时手动触发该change事件)person

backbone.js

2
推荐指数
1
解决办法
9299
查看次数

标签 统计

backbone.js ×1

c ×1

goto ×1

scope ×1