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

标签 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

最佳答案

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

关于c++ - 为什么可以在g++(gcc)中重新定义gnulib?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56436159/

相关文章:

c++ - SQL Server 从扩展存储过程捕获错误

c++ - 更改 Cmake 文件以从源代码编译依赖项而不是使用 FIND_PACKAGE

c++ - Mac 上架构 x86_64 的 undefined symbol

gcc - 解释 gcc 映射文件

java - Linux 和 Windows java 编译器生成相同还是不同的类文件?

python - 试图将 python 嵌入到 tinycc 中,说 python 符号未定义

c++ - 为什么 Google Mocks 发现这个函数调用不明确?

c++ - boost asio 错误类别为空

C++ PPL - 初始化可组合

c - 不是常量初始化元素?