2013-11-15 201 views
0

我有一個文件名爲那麼header1.h用下面的代碼包括和命名空間

#include "string.h" 

namespace custom1 
{ 

    #define MYMACRO(f, z) strrchr(f, z) 
} 

,但現在我得到的編譯錯誤使用gcc像

OtherHeader.h error: there are no arguments to ‘strrchr’ that depend on a template parameter, so a declaration of ‘strrchr’ must be available [-fpermissive]

爲什麼不是「string.h」包含可見?另一個文件可以做到這一點

namespace custom1 
{ 
    is MYMACRO visibile here? 
} 

爲什麼我得到依賴錯誤?

+0

'strrchr'有兩個參數。代碼中缺少一些上下文,我懷疑單獨的宏定義可能會觸發此錯誤。 – jrok

+0

對不起,貼錯了 –

回答

1

預處理器宏沒有名稱空間的概念,它們總是執行'全局文本處理'。

0

的strrchr函數在的簽名是

char *strrchr(const char *s, int c); 

所以我認爲你只是缺少一個參數。