包含和名称空间

时间:2013-11-15 20:23:34

标签: c++ namespaces

我有一个名为 header1.h 的文件,其代码如下

#include "string.h"

namespace custom1
{

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

但现在我收到gcc的编译错误,如

  

OtherHeader.h错误:没有“strrchr”的参数   取决于模板参数,因此必须声明“strrchr”   可用[-fpermissive]

为什么“string.h”包含不可见?另一个文件可以执行此操作

namespace custom1
{
  is MYMACRO visibile here?
}

为什么我收到了依赖错误?

2 个答案:

答案 0 :(得分:1)

预处理器宏没有命名空间的概念,它们总是进行“全局文本处理”。

答案 1 :(得分:0)

strrchr函数的签名是

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

所以我认为你只是错过了一个论点。