Я наткнулся на следующую ошибку компиляции в C ++ с компилятором g ++:
error on line line 1 with message:
invalid preprocessing directive #a
(с кареткой над символом а), за которой следует еще одна, вероятно, последующая ошибка в строке 4 с сообщением:
cout was not declared in this scope.
Я использую редактор с блоками кода 10.05 с mingw. Я попытался удалить расширение .h из оператора include файла iostream, переключиться между различными вариантами кодирования файлов, а также заменить угловую скобку одинарными и двойными кавычками. Я застрял на извините, если это дубликат (хотя я прошел через несколько уже заданных вопросов по релевантности).
Следующий код иллюстрирует проблему:
#include <iostream.h>
int main()
{
cout<< "abc"+8;
cout<< "def"+4;
cout<< "ha";
return 0;
}
cout
существует в пространстве имен std
Так что либо
#include<iostream>
//...
std::cout << "abc" << 8;
//...
или же
#include<iostream>
using namespace std;
//...
или же
#include<iostream>
using std::cout;
//...
Я обычно предпочитаю первый, если я использую его только один или два раза, второй, если я использую много разных частей из пространства имен (и только в файле cpp), или третий, если я использую только кусок или 2 из пространства имен, но используя одну и ту же пару раз.
Кроме того, как указано в комментариях, не используйте второй в заголовках. Увидеть: "используя пространство имен" в заголовках с ++
Кроме того, в вашем #include есть недопустимый символ. Вы можете увидеть это в шестнадцатеричном редакторе или заметьте, что stackoverflow не выделяет их одинаково:
#include<iostream>
#include<iostream>
Полностью рабочий код:
#include<iostream>
using std::cout;
int main()
{
cout << "abc" << 8;
cout << "def" << 4;
cout << "ha";
return 0;
}
Производит следующий вывод abc8def4ha
после того, как я исправил попытку добавить 8 к char*
Вы должны использовать std :: cout, что означает, что ключевое слово «cout» является частью стандартной библиотеки.
Ошибка «неверная директива» вызвана некоторыми невидимыми символами Юникода в #include
директива; возможно, вы скопировали это с веб-сайта, на котором были вставлены символы форматирования в коде. Их можно увидеть в вопросе, если вы посмотрите на источник в шестнадцатеричном редакторе. Эта ошибка должна быть исправлена путем удаления и повторного ввода #include
линия.
Вероятно, у вас будут другие ошибки, так как код устарел на пятнадцать лет; большинство современных компиляторов не предоставляют предварительно стандартные библиотеки. В наши дни стандартные заголовки библиотеки не имеют .h
расширение:
#include <iostream>
и почти все имена, которые они объявляют, находятся внутри std
Пространство имен:
std::cout << "ha";
В заключение, "abc"+8
не делает ничего толкового. Строковый литерал представляет собой массив из четырех символов, и +8
пытается дать вам указатель на девятый символ, который не существует. Результатом является неопределенное поведение.
Если вы хотите напечатать «abc», а затем «8», то вы хотите:
std::cout << "abc" << 8;
Попробуйте использовать это так:
#include <iostream>
using std :: cout;
cout
является частью std
библиотека
Если у вас есть курсор выше a, попробуйте еще раз набрать #include.
Вы можете случайно набрать альтернативу I, которая похожа, но имеет другой код.
Предложения о std :: имеют отношение только ко второй получаемой вами ошибке.
Я также не до конца понял, чего вы пытались достичь с помощью «abc» +8.