2011-12-13 70 views
7

我耗時一個與煩人的信息充塞像一個頭文件:在Visual C++中禁用#pragma消息(「...」)?

// annoying.h: 

#pragma message("Compiling " __FILE__) 

我希望能有一個乾淨的構建輸出時,有沒有實際的問題。在包含此文件以停止打印郵件之前,有什麼我可以做的嗎?

// not_annoying.cpp: 

// PUT MAGIC HERE 
#include "annoying.h" 
+0

標題從另一個組傳遞;每次手動更改似乎都不太明智。不過,我確實考慮過一個通過'sed'運行的預構建步驟。 – Eric

回答

8

只要定義一個使message編譯指示消失的宏即可。

#define message(ignore) 
+0

因此,在它上面寫上「#pragma」的行是合法的?不幸的是,我不能使用它,因爲令牌「消息」也用於其他事情 - 顯然我真正擁有的是組織問題而不是技術問題。但遺憾的是,這不僅僅是一種類似的meta-pragma! – Eric

+3

雜注的行爲已經由實現定義,所以空編譯的效果也是實現定義的。這在技術上是合法的(6.10.6.1),但誰知道它做了什麼! –

+2

@Eric:請注意'#define message(ignore)'將定義一個名爲'message'的函數宏*,而不是一般的宏。也就是說,它將替代一個'message()'站點,而不是一個普通的'message'站點。另外,如果你想限制這個宏的範圍,你可以在包含有問題的頭文件後「#undef」。 – jamesdlin