C++ 中的 #pragma warning(push) 和 #pragma warning(pop)有什么用
生活随笔
收集整理的這篇文章主要介紹了
C++ 中的 #pragma warning(push) 和 #pragma warning(pop)有什么用
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#pragma?warning(push)是保存當(dāng)前的編譯器警告狀態(tài);?
#pragma?warning(pop)是恢復(fù)原先的警告狀態(tài)。?
?
例如:rocksdb中的一段代碼
#if defined(_MSC_VER)
#pragma warning(push)
#pragma warning(disable : 4244)? ? # 禁止compiler警告
?
// varint32編碼
char* EncodeVarint32(char* dst, uint32_t v) {// Operate on characters as unsignedsunsigned char* ptr = reinterpret_cast<unsigned char*>(dst);static const int B = 128;if (v < (1 << 7)) {*(ptr++) = v;} else if (v < (1 << 14)) {*(ptr++) = v | B;*(ptr++) = v >> 7;} else if (v < (1 << 21)) {*(ptr++) = v | B;*(ptr++) = (v >> 7) | B;*(ptr++) = v >> 14;} else if (v < (1 << 28)) {*(ptr++) = v | B;*(ptr++) = (v >> 7) | B;*(ptr++) = (v >> 14) | B;*(ptr++) = v >> 21;} else {*(ptr++) = v | B;*(ptr++) = (v >> 7) | B;*(ptr++) = (v >> 14) | B;*(ptr++) = (v >> 21) | B;*(ptr++) = v >> 28;}return reinterpret_cast<char*>(ptr); }
#if defined(_MSC_VER)
#pragma warning(pop)??# 恢復(fù)compiler警告
#endif
這樣在編譯? varint32編碼? ?部分的代碼時(shí),4244這個(gè)警告將不會(huì)出現(xiàn)。
總結(jié)
以上是生活随笔為你收集整理的C++ 中的 #pragma warning(push) 和 #pragma warning(pop)有什么用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 在数据库中, 不用max()/min()
- 下一篇: 深度学习CNN算法原理