Почему переопределение gnulib в g ++ (gcc) возможно? - PullRequest
1 голос
/ 04 июня 2019

Спасибо за помощь!

Я написал некоторый код, как показано ниже, и он работает
Но я не знаю, почему это переопределение разрешено

Если я удаляю повторное определение 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 голосов
/ 04 июня 2019

Когда вы пишете using namespace std, это не означает, что любая написанная вами функция находится в пространстве имен std.Это означает, что пространство имен std доступно для неквалифицированного поиска.То, что вы делаете, это затенение std::usleep, а не определение его несколько разВаш usleep находится в глобальном пространстве имен.

...