gcc 内置函数和常见的 c/c++ 代码有什么区别

问题描述

我只知道gcc有很多内置函数,其中一些似乎很有用。

例如,内置函数 __builtin_popcount() 可以计算整数中一个(设置位)的数量

嗯,我知道不同的编译器可能有不同的内置函数,所以使用 __builtin_popcount() 可能会导致一些可移植性问题。但是如果我们忽略这个问题,那么内置函数和普通的c/c++代码有什么区别呢?你看,我们也可以很容易地编写一段代码来计算整数中一个(设置位)的数量

int main(void)
{

    int i = 5;
    std::cout << __builtin_popcount(i) << std::endl;

    int j = 5;
    std::bitset<32> bits = j;
    std::cout << bits.count() << std::endl;

    int k = 5;
    int counter = 0;
    while (k != 0) {
        if ((k & 1) == 1) {
            counter++;
        }
        k >>= 1;
    }
    std::cout << counter << std::endl;

    return 0;
}

让我们看看这段代码。我们可以使用 bitset一个简单的循环来计算位数,而且我们可以使用内置函数 __builtin_popcount() 来这样做。那么它们之间有什么区别呢?如果我使用内置函数,是否意味着我可以获得更好的性能?我应该在我的普通 c/c++ 项目中使用内置函数吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)