Почему 'int' используется как просто int и почему не как std :: int в C ++? - PullRequest
7 голосов
/ 09 марта 2020

В отличие от всего standard, используемого в текущем C ++, существуют ли какие-либо конкретные c причины, по которым следует исключить int, char, ...., main() и другие из него. (Не говорю о +, -, %, .., потому что они не зависят от языка c)

Почему это не так:

std::int std::main(std::int argc, std::char *argv[])
{
    //Sample C++ code (incorrect with current standards though)
    std::return 0;
}

Не является ли стандартизация неполной с ними вне сферы действия STD?

Я считаю, что они являются базовыми c компонентами, которые встречаются повсюду при написании программы, простой или сложной. Они не включены в стандартизацию, просто следуют принципу DRY.

Ответы [ 4 ]

9 голосов
/ 09 марта 2020

Ключевые слова, такие как int и return и функция main(), включены в стандарт C ++ . std не означает, что стандартизированы только эти вещи. Вместо этого это относится к вещам, которые есть в стандартной библиотеке (которая, как и ключевые слова, является частью стандарта). Включающие файлы, такие как #include <vector>, необходимы для использования стандартной библиотеки, но ключевые слова могут использоваться без каких-либо #include s.

9 голосов
/ 09 марта 2020

std:: - это имя пространства имен стандартной библиотеки. Но C ++ имеет встроенные типы, и они являются более фундаментальными. Фактически, значительная часть стандартной библиотеки создается с использованием таких типов, как int. Вы можете увидеть проблему курицы и яйца, если Стандартная библиотека будет зависеть от себя.

3 голосов
/ 09 марта 2020

Упоминаемые вами типы: ключевые слова . Ключевые слова не являются идентификаторами и поэтому не могут принадлежать областям или пространствам имен. Во время синтаксического анализа программы ключевые слова находятся на более ранней стадии, чем идентификаторы.

Изменение пространства имен точки входа в программу (::main в настоящее время) будет означать, что все компоновщики повсюду должны быть обновлены, и поэтому я сомневаюсь там будет любая поддержка для такого шага. Также go противоречит принципу, что std для стандартной библиотеки, а не для пользовательского кода, тогда как пользователь пишет код, который входит в main.

0 голосов
/ 12 марта 2020

Насколько я знаю. Int - это примитивный (первичный) тип данных. Первичные типы данных уже определены в языках программирования, также называемых примитивными или встроенными типами данных. Тип данных int является одним из них. В некоторых языках вы можете видеть некоторые из ключевых слов byte, short, int, long, char, float, double или boolean, используемых как сами по себе.

Надеюсь, я вам помог.

...