小编use*_*215的帖子

新函数和eval之间的奇怪交互

这行代码失败有什么理由吗?

new Function("eval('function foo(){ alert() }'); foo()")()
Run Code Online (Sandbox Code Playgroud)

它按照预期在Chromium中弹出警报,但在Firefox中失败(foo未定义).这是一个Firefox错误,还是我的代码有问题?

javascript firefox

5
推荐指数
1
解决办法
113
查看次数

通过像这样的const修改nonconst指针是合法的吗?

考虑以下功能:

void f(int const* p)
{
    *const_cast<int*>(id(p)) = 0;
}
Run Code Online (Sandbox Code Playgroud)

假设f总是得到int*一个参数,这是合法的吗?我不是在问这是不是一件好事,我只想要一个严格正式的答案.

令我担心的是,如果你能做到这一点,那么优化器在使用consts方面会有更困难的工作.考虑一个更复杂的例子:

// identity, always returns what it gets
uintptr_t id(uintptr_t p)
{
    static unsigned int const ar[5] {0x12345678, 0x87654321, 0x02468ACE, 0xECA86420, 0x88888888};

    for (size_t i = 0; i < 5; ++i)
        p ^= ar[2*i % 5];

    for (size_t i = 0; i < 5; ++i)
        p ^= ar[3*i % 5];

    return p;
}

void f(int const* p)
{
    uintptr_t q = id(reinterpret_cast<uintptr_t>(p));
    *reinterpret_cast<int*>(q) = 0; …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

4
推荐指数
1
解决办法
151
查看次数

标签 统计

c++ ×1

c++11 ×1

firefox ×1

javascript ×1