为什么可以在g ++(gcc)中重新定义gnulib?

时间:2019-06-04 01:00:46

标签: c++ gcc compilation g++ glibc

感谢您对我的帮助!

我写了一些类似下面的代码,它可以正常工作
但是我不知道为什么允许重新定义

如果删除usleep重新定义,它将像原始的usleep一样

如果有人帮助我,那就太好了

#include <iostream>
#include <unistd.h>

using namespace std;

int usleep(useconds_t useconds)
{
    return 100;
}

int main(int argc, char **argv)
{
    cout << usleep(1000000) << endl;
}

它编译良好,并返回100

1 个答案:

答案 0 :(得分:0)

编写using namespace std时,并不意味着您编写的任何函数都在std名称空间中。这意味着std命名空间可用于非限定查询。您正在做的是遮盖std::usleep,而不是多次定义它。您的usleep在全局名称空间中。