c++有哪些像__gcd這樣的編譯器自帶函數?

如題


太多了。

在這個頁面搜索built可以看到大部分。

https://gcc.gnu.org/onlinedocs/gcc/

這個頁面是比較有用的一些

https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html#Other-Builtins

常用的譬如__builtin_popcount用來算一個int里1的個數。


你說的這些函數, @莫濤 已經說了,我就再補充一些東西吧。

你說的這個其實是編譯器後端可以識別的函數,我們編譯器前端不會做任何事情,只是識別後就完全傳遞給編譯器後端。一般這樣的函數被稱為built in函數,如__builtin_printf,同時還有一些特定的編譯器支持的函數,也可以被編譯器後端識別,如我們IBM XL C++ Compiler支持vector操作的vec_perm函數等。

而這樣的built in函數由於是編譯器內置來做的,所以有時候可以做一些很有趣的東西,比如下面的代碼:

int main()
{
int i = 0;

// checks whether ++i is a constant expression, does not evaluate ++i
bool b = __builtin_constant_p (++i);

// output: 0,0
__builtin_printf("%d, %d
", i, b);
return 0;
}


請問這個函數是哪個頭文件裡面的啊?


給大家推薦一個學習的博客 這個博客 有很多關於iOS開發的技術總結 GCD相關介紹及使用實例
https://chuliangliang.github.io


推薦閱讀:

為什麼 VC 不允許 x64 內聯彙編?
什麼語言最適合寫編譯器/解釋器?
vector<vector<int> >中>>之間的空格是否是必須的?
Visual Studio 為何沒有 64 位的版本?
Visual C++ 6以debug模式編譯很拙笨,為何要做無用功?

TAG:編程語言 | C | 編譯器 | ACM競賽 | g |