UNREFERENCED_PARAMETER的作用
生活随笔
收集整理的這篇文章主要介紹了
UNREFERENCED_PARAMETER的作用
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
UNREFERENCED_PARAMETER(pParam);
跟蹤到宏定義
#define UNREFERENCED_PARAMETER(P) (P)
#define DBG_UNREFERENCED_PARAMETER(P) (P)
#define DBG_UNREFERENCED_LOCAL_VARIABLE(V) (V)
使用的方法比如:
int SomeFunction(int arg1, int arg2)
{
UNREFERENCED_PARAMETER(arg2)
...
}
UNREFERENCED_PARAMETER 展開(kāi)傳遞的參數(shù)或表達(dá)式。其目的是避免編譯器關(guān)于未引用參數(shù)的警告。許多程序員,包括我在內(nèi),喜歡用最高級(jí)別的警告 Level 4(/W4)進(jìn)行編譯。Level 4 屬于“能被安全忽略的事件”的范疇。雖然它們可能使你難堪,但很少破壞你的代碼。例如,在你的程序中可能會(huì)有這樣一些代碼行:
int x=1;
但你從沒(méi)用到過(guò) x。也許這一行是你以前使用 x 時(shí)留下來(lái)的,只刪除了使用它的代碼,而忘了刪除這個(gè)變量。Warning Level 4 能找到這些小麻煩。所以,為什么不讓編譯器幫助你完成可能是最高級(jí)別的專(zhuān)業(yè)化呢?用Level 4 編譯是展示你工作態(tài)度的一種方式。如果你為公眾使用者編寫(xiě)庫(kù),Level 4 則是社交禮節(jié)上需要的。你不想強(qiáng)迫你的開(kāi)發(fā)人員使用低級(jí)選項(xiàng)清潔地編譯他們的代碼。
問(wèn)題是,Level 4 實(shí)在是太過(guò)于注意細(xì)節(jié),在 Level 4 上,編譯器連未引用參數(shù)這樣無(wú)傷大雅的事情也要抱怨(當(dāng)然,除非你真的有意使用這個(gè)參數(shù),這時(shí)便相安無(wú)事)。假設(shè)你有一個(gè)函數(shù)帶來(lái)兩個(gè)參數(shù),但你只使用其中一個(gè):
int SomeFunction(int arg1, int arg2)
{
return arg1+5;
}
使用 /W4,編譯器抱怨:
“warning C4100: ''arg2'' : unreferenced formal parameter.”
為了騙過(guò)編譯器,你可以加上 UNREFERENCED_PARAMETER(arg2)?,F(xiàn)在編譯器在編譯你的引用 arg2 的函數(shù)時(shí)便會(huì)住口。并且由于語(yǔ)句:
arg2;
實(shí)際上不做任何事情,編譯器不會(huì)為之產(chǎn)生任何代碼,所以在空間和性能上不會(huì)有任何損失。
跟蹤到宏定義
#define UNREFERENCED_PARAMETER(P) (P)
#define DBG_UNREFERENCED_PARAMETER(P) (P)
#define DBG_UNREFERENCED_LOCAL_VARIABLE(V) (V)
使用的方法比如:
int SomeFunction(int arg1, int arg2)
{
UNREFERENCED_PARAMETER(arg2)
...
}
UNREFERENCED_PARAMETER 展開(kāi)傳遞的參數(shù)或表達(dá)式。其目的是避免編譯器關(guān)于未引用參數(shù)的警告。許多程序員,包括我在內(nèi),喜歡用最高級(jí)別的警告 Level 4(/W4)進(jìn)行編譯。Level 4 屬于“能被安全忽略的事件”的范疇。雖然它們可能使你難堪,但很少破壞你的代碼。例如,在你的程序中可能會(huì)有這樣一些代碼行:
int x=1;
但你從沒(méi)用到過(guò) x。也許這一行是你以前使用 x 時(shí)留下來(lái)的,只刪除了使用它的代碼,而忘了刪除這個(gè)變量。Warning Level 4 能找到這些小麻煩。所以,為什么不讓編譯器幫助你完成可能是最高級(jí)別的專(zhuān)業(yè)化呢?用Level 4 編譯是展示你工作態(tài)度的一種方式。如果你為公眾使用者編寫(xiě)庫(kù),Level 4 則是社交禮節(jié)上需要的。你不想強(qiáng)迫你的開(kāi)發(fā)人員使用低級(jí)選項(xiàng)清潔地編譯他們的代碼。
問(wèn)題是,Level 4 實(shí)在是太過(guò)于注意細(xì)節(jié),在 Level 4 上,編譯器連未引用參數(shù)這樣無(wú)傷大雅的事情也要抱怨(當(dāng)然,除非你真的有意使用這個(gè)參數(shù),這時(shí)便相安無(wú)事)。假設(shè)你有一個(gè)函數(shù)帶來(lái)兩個(gè)參數(shù),但你只使用其中一個(gè):
int SomeFunction(int arg1, int arg2)
{
return arg1+5;
}
使用 /W4,編譯器抱怨:
“warning C4100: ''arg2'' : unreferenced formal parameter.”
為了騙過(guò)編譯器,你可以加上 UNREFERENCED_PARAMETER(arg2)?,F(xiàn)在編譯器在編譯你的引用 arg2 的函數(shù)時(shí)便會(huì)住口。并且由于語(yǔ)句:
arg2;
實(shí)際上不做任何事情,編譯器不會(huì)為之產(chǎn)生任何代碼,所以在空間和性能上不會(huì)有任何損失。
轉(zhuǎn)載于:https://www.cnblogs.com/huking/archive/2009/11/25/1610593.html
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的UNREFERENCED_PARAMETER的作用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ASP.NET之SOAP的发送、接收与处
- 下一篇: 读取xml文件基于xpath