你知道为什么下面的代码无法编译吗?
#include <iostream>
namespace C {
extern "C" {
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h> // open()
#include <unistd.h> // read()
}
}
int main(int argc, char** argv) {
int fd = C::open("./main.cpp", O_RDONLY);
C::read(fd, 0, 0);
return 0;
}
GCC 4.4编译器的错误是:
error: ‘read’ is not a member of ‘C’
答案 0 :(得分:5)
您无法将所有内容注入标题下的命名空间。在这种情况下,read
是一个宏,在命名空间解析规则生效之前,它会被评估为其他内容。