小编man*_*lio的帖子

什么是对博伊斯 - 科德正常形式的良好KISS描述?

什么是KISS(保持简单,愚蠢)的方式来记住Boyce-Codd的正常形式是什么以及如何采用非标准化的表格和BCNF呢?

维基百科的信息:对我来说不是很有帮助.

database database-normalization bcnf

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

你能混合使用同一编译器的不同版本编译的c ++吗?

例如,我可以将一组已编译成GCC-4.6的库与GCC-4.9混合使用.

我知道不同的编译器"品种"如VS不能与MinGW但可以不同代的同一编译器?问题可能会发生吗?如果是这样的话?

c++ gcc abi gcc4.6 gcc4.9

23
推荐指数
1
解决办法
1万
查看次数

自动作为GCC 4.9扩展的常规功能中的参数吗?

gcc 4.9允许使用以下代码,但gcc 4.8和clang 3.5.0拒绝它.

void foo(auto c)
{
    std::cout << c.c_str();
}
Run Code Online (Sandbox Code Playgroud)

我进入warning: ISO C++ forbids use of 'auto' in parameter declaration [-Wpedantic]4.9但是在4.8和clang我得到error: parameter declared 'auto'.

c++ gcc auto gcc4.9 c++14

23
推荐指数
2
解决办法
4561
查看次数

在android kitkat中使用新的IMMERSIVE模式

我想让一个活动进入IMMERSIVE模式并在它启动时隐藏顶部和底部系统栏.

在android开发者网站上,他们说我应该使用setSystemUiVisibility()并提供SYSTEM_UI_FLAG_IMMERSIVESYSTEM_UI_FLAG_HIDE_NAVIGATION.

我怎么能OnCreate()在活动的方法中这样做?我认为setSystemUiVisibilityActivity类中没有提供它,它应该在视图中发生.有解决方法吗?

UPDATE

确定根据门把我添加了以下行,但我没有看到任何更改,导航栏和按钮按钮仍然可见:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState == null) {
        }
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE);
    }

    //Rest of activity code
Run Code Online (Sandbox Code Playgroud)

android android-view android-4.4-kitkat

22
推荐指数
2
解决办法
3万
查看次数

如何在没有运行时成本的情况下基于断言来指导GCC优化?

我有一个宏在我的代码中使用,在调试模式下:

#define contract(condition) \
    if (!(condition)) \
        throw exception("a contract has been violated");
Run Code Online (Sandbox Code Playgroud)

...但在发布模式下:

#define contract(condition) \
    if (!(condition)) \
        __builtin_unreachable();
Run Code Online (Sandbox Code Playgroud)

这样做的原因assert()是,在发布版本中,由于UB传播,编译器可以大量优化代码.

例如,使用以下代码进行测试:

int foo(int i) {
    contract(i == 1);
    return i;
}

// ...

foo(0);
Run Code Online (Sandbox Code Playgroud)

...在调试模式下抛出异常,但return 1;在释放模式下为无条件生成程序集:

foo(int):
        mov     eax, 1
        ret
Run Code Online (Sandbox Code Playgroud)

条件以及依赖它的一切都已经过优化.

我的问题出现在更复杂的条件下.当编译器无法证明条件没有副作用时,它不会将其优化出来,与不使用合同相比,这是一个严重的惩罚.

有没有办法表明合同中的条件没有副作用,所以总是优化出来?

c++ optimization gcc assert compiler-optimization

22
推荐指数
3
解决办法
1104
查看次数

C++ 11 vector <bool>性能问题(带代码示例)

我注意到在运行以下代码时,向量比bool数组慢得多.

int main() 
{
    int count = 0;
    int n = 1500000;
    // slower with c++ vector<bool>
    /*vector<bool> isPrime;
    isPrime.reserve(n);
    isPrime.assign(n, true);
    */
    // faster with bool array 
    bool* isPrime = new bool[n];

    for (int i = 0; i < n; ++i)
        isPrime[i] = true;


    for (int i = 2; i< n; ++i) {
        if (isPrime[i])
            count++;
        for (int j =2; i*j < n; ++j )
            isPrime[i*j] = false;
    }

    cout <<  count << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以让我vector<bool> …

c++ performance vector bitvector c++11

21
推荐指数
3
解决办法
4690
查看次数

表中有多少字段"太多"?

我有一个同事正在计划一个新应用程序的数据库,该应用程序将包含多个表,每个表包含30多个字段.这太过分吗?也许我只是不够了解企业.

编辑:此外,很多字段都是选项类型的东西(比如在请求表单上,你希望你的小部件是黄色还是绿色,他有一个带有枚举的'color'字段).随着时间的推移,很可能会添加或删除这些内容.我没有真正完成数据库设计,并试图远离它自己,所以也许我是完全愚蠢的,但肯定有更好的方法这样做?

database database-design database-normalization

20
推荐指数
5
解决办法
2万
查看次数

在Boost测试框架中测试assert

我使用Boost Test框架对我的C++代码进行单元测试,并想知道是否可以测试函数是否会断言?是的,听起来有点奇怪,但请忍受我!我的许多函数在输入时检查输入参数,断言它们是否无效,并且测试它是有用的.例如:

void MyFunction(int param)
{
    assert(param > 0); // param cannot be less than 1
    ...
}
Run Code Online (Sandbox Code Playgroud)

我希望能够做到这样的事情:

BOOST_CHECK_ASSERT(MyFunction(0), true);
BOOST_CHECK_ASSERT(MyFunction(-1), true);
BOOST_CHECK_ASSERT(MyFunction(1), false);
...
Run Code Online (Sandbox Code Playgroud)

你可以检查使用Boost测试抛出的异常,所以我想知道是否还有一些断言魔法......

c++ boost unit-testing assert boost-test

20
推荐指数
3
解决办法
9989
查看次数

为什么要在C和C++中避免使用system()函数?

我在论坛上看到很多人告诉他们要避免这个system()功能,比如说system("cls").我不明白为什么.

请告诉我为什么我应该避免这个功能.而且,由于clrscr()不能与CodeBlocks一起使用,有什么其他方法可以在不使用该system()功能的情况下清除屏幕?

c c++ system

20
推荐指数
1
解决办法
7006
查看次数

检测悬空引用临时

Clang 3.9非常重用临时使用的内存.

此代码是UB(简化代码):

template <class T>
class my_optional
{
public:
    bool has{ false };
    T value;

    const T& get_or_default(const T& def)
    {
        return has ? value : def;
    }
};

void use(const std::string& s)
{
    // ...
}

int main()
{
    my_optional<std::string> m;
    // ...
    const std::string& s = m.get_or_default("default value");
    use(s); // s is dangling if default returned
}
Run Code Online (Sandbox Code Playgroud)

我们有大量类似上面的代码(my_optional只是一个简单的例子来说明它).

因为UB所有的clang编译器从3.9开始重用这个内存,而且它是合法的行为.

问题是:如何在编译时检测这种悬空引用,或者在运行时检测清理程序?没有clang消毒剂可以检测到它们.

UPD.请不要回答:"使用std::optional".仔细阅读:问题不是关于它.
UPD2.请不要回答:"你的代码设计很糟糕".仔细阅读:问题不是代码设计.

c++ undefined-behavior c++11 clang++ dangling-pointer

20
推荐指数
1
解决办法
1781
查看次数