Visual studio идентификатор не определен
Я работаю над частью "драйвера" моего назначения программирования, и я продолжаю получать эту абсурдную ошибку:
ошибка C2065: 'cout': необъявленный идентификатор
Я даже пытался использовать std:: cout, но я получаю еще одну ошибку, которая говорит: IntelliSense: пространство имен "std" не имеет члена "cout" , когда у меня есть объявленный с использованием пространства имен std, включая iostream +, я даже пытался использовать ostream
Я знаю, что это стандартный вопрос о нобе, но это меня насторожило, и я новичок (это означает: я запрограммировал раньше. )
Я использую Visual Studio 2010 и запускаю Windows 7. Все файлы .h имеют "использование пространства имен std" и включают iostream и ostream.
ОТВЕТЫ
Ответ 1
Это не будет работать.
Ответ 2
напишите этот код, он отлично работает.
Ответ 3
Ответ 4
include "stdafx.h" в порядке
Но вы не можете использовать cout , если вы не включили using namespace std
Если вы не включили пространство имен std, вам нужно написать std::cout вместо простого cout
Ответ 5
Я видел, что если вы используете
тогда вы получите эту проблему.
Если вы используете
(уведомление - без .h)
то вы не получите проблему, о которой вы упомянули.
Ответ 6
Ответ 7
Нижеприведенный код компилируется и запускается правильно для меня, используя gcc. Попробуйте скопировать/вставить это и посмотреть, работает ли он.
Ответ 8
Если единственным файлом, который вы включаете, является iostream, и он все еще говорит undefined, то, возможно, iostream не содержит того, что он должен был. Возможно ли, что у вас есть пустой файл, совпадающий по имени "iostream" в вашем проекте?
Ответ 9
Я видел похожие вещи, когда я использовал расширение .c файла с кодом С++. Кроме этого, я должен согласиться со всеми о багги установке. Это работает, если вы попытаетесь скомпилировать проект с более ранней версией VS? Попробуйте VС++ Express 2008. Его бесплатно на msdn.
Ответ 10
Такое глупое решение в моем случае:
Выше было указано в качестве примера a, когда я изменил его, чтобы он был похож на пример b ниже.
Мой код составлен как шарм. Попробуйте, гарантированно сработает.
Ответ 11
прежде чем вы начнете эту программу, избавитесь от всего кода и сделайте простой мир привет внутри основного. Включать только iostream и использовать пространство имен std;. Постепенно добавьте его, чтобы найти свою проблему.
Ответ 12
У меня есть VS2010, Beta 1 и Beta 2 (один на моей рабочей машине и один на дому), и я использовал std множество без проблем. Попробуйте ввести:
И посмотрите, дает ли Intellisense что-нибудь. Если это дает вам обычный материал ( abort , abs , acos и т.д.), За исключением cout , ну тогда это довольно головоломка. Определенно посмотрите на ваши заголовки С++ в этом случае.
Помимо этого, я бы просто добавил, чтобы убедиться, что вы используете обычный пустой проект (не CLR, где Intellisense поврежден), и что вы на самом деле пытались построить проект хотя бы один раз. Как я уже упоминал в комментарии, VS2010 анализирует файлы после добавления include ; возможно, что что-то застряло в парсере, и он не сразу "нашел" cout . (В этом случае попробуйте перезапустить VS, возможно?)
Ответ 13
У меня была такая же проблема при запуске проекта ms С++ 2010 с нуля - я удалил все файлы заголовков, сгенерированные с помощью ms, но использовал:
Мне пришлось включить stdafx.h , поскольку это вызвало ошибку, в которой он не был.
Ответ 14
из вашего .cpp файла, создайте файл заголовка и поместите его в файл .h. Затем добавьте
в верхней части вашего .cpp-кода. Затем запустите его снова.
Ответ 15
Вы уверены, что он компилируется как С++? Проверьте имя файла (он должен заканчиваться на .cpp ). Проверьте настройки проекта.
Нет ничего плохого в вашей программе, а cout находится в namespace std . Ваша установка VS 2010 Beta 2 является дефектной, и я не думаю, что это просто ваша установка.
Я не думаю, что VS 2010 готов к С++. Стандартная программа "Hello, World" не работала на бета-версии 1. Я просто попытался создать тестовое консольное приложение Win32, а сгенерированный файл test.cpp не имел функции main() .
У меня действительно очень плохое чувство о VS 2010.
Ответ 16
Попробуй, это сработает. Я проверил его в Windows XP, Visual Studio 2010 Express.
Ответ 17
Ответ 18
В Visual Studio используйте весь ваш фильтр заголовка ниже "stdafx.h".
Ответ 19
Включите библиотеку std, вставив следующую строку вверху вашего кода:
Ответ 20
обычно сохраняется в папке C:\Program Files\Microsoft Visual Studio 8\VC\include. Сначала проверьте, все ли он там. Затем выберите "Инструменты + варианты", "Проекты и решения", "Каталоги VС++", выберите "Включить файлы" в поле "Показать каталоги для" и дважды проверьте, что включение (VCInstallDir) включено в список.
Ответ 21
Я столкнулся с этой ошибкой после того, как установил vs 2010 и просто пытался получить почти идентичную программу для работы.
Я уже делал кодировку ваниль C в коробках в стиле unix, решил, что немного поиграю с этим.
Первая программа, которую я пробовал, была:
Большая вещь, чтобы заметить здесь. если вы все сделали C-кодирование,
Выглядит странно. это должно быть:
В моем случае я просто изменил программу на:
И он отлично работал.
Примечание. Используйте CTRL + F5, чтобы окно консоли закрывалось, чтобы вы могли видеть результаты.
Ответ 22
Просто используйте printf !
Включите stdio.h в заголовочный файл stdafx.h для printf .
Ответ 23
Ответ 24
Это был компилятор - теперь я использую Eclipse Galileo, и программа работает как чудо
Cout - не определён, cin -не определён
// Программа для преобразования // Градусов Цельсия в Форенгейт // Fahrenheit = NCelsius *.
Идентификатор не найден/идентификатор не определен
Visual Studio ругается на 83, 127, 193 строки - "Идентификатор "Expon" не найден/не определен".
cooller_94, правильно)) ошибся
cooller_94, правильно)) ошибся
Следующая ошибка! Возможно вы забыли добавить директиву "include "stdafx.h"" в источник. Возможно вы забыли добавить директиву "include "stdafx.h"" в источник. добавьте её или пересоздайте проект убрав галочки напротив "зарание скомп. заголовок". добавьте её или пересоздайте проект убрав галочки напротив "зарание скомп. заголовок". Следующая ошибка: Отсутствует спецификатор типа - предполагается int. C++ не поддерживает int по умолчаниюИ возьмите другую книгу.
И возьмите другую книгу.
Не подскажете куда добавить int main()? Добавил интуитивно вот сюда, все тщетно Во-первых, вставляйте исходники текстом.Во-вторых, по-русски внизу написано, что у функци main уже есть тело.
Возможно вы забыли добавить директиву "include "stdafx.h"" в источник. Во-первых, вставляйте исходники текстом.
Во-вторых, по-русски внизу написано, что у функци main уже есть тело.
Спасибо Вам, и всем отвечающим, все получилось. Как же мне теперь запустить мою программу/увидеть что выводится на экран? Был создан файл ConsoleApplication3.exe но при открытии он мне ничего не показывает, открывается и закрывается сразу же.
Извините, вы переходили по этой ссылке? Разрешение скринов настолько мало, что текст не читаем, предложите пожалуйста альтернативу.
Добавлено через 4 минуты
Требуется идентификатор (идентификатор с не определён)
Не могу понять в чём ошибка данного записи.Пожалуйста, объясните. vector <pair<int, int>> STACK;.
Идентификатор не определен
void __fastcall String(int x, int y, DWORD Color, DWORD Style, const char *Format, . ) < .
Идентификатор не определен
Писали ее на microsoft visual studio2013. выдает 7 ошибок на 74, 125, 136, 149, 159, 170 и 177 и.
Пример текстов ошибок:
- Для компилятора Visual Studio: error C2065: 'cout' : undeclared identifier
- Для компилятора GCC: 'cout' undeclared (first use in this function)
Решение
Чаще всего они приходят из-за того, что забывают включить заголовочный файл, содержащий объявление функции, например, эта программа выдаст ошибку «необъявленный идентификатор»:
Отсутствует заголовок
Если вы написали заголовок и включили его правильно, заголовок может содержать неправильный включить охрану .
Переменная с ошибкой
Другой распространенный источник ошибки новичка возникает, когда вы неправильно написали переменную:
Неправильный объем
Например, этот код выдаст ошибку, потому что вам нужно использовать std::string :
Использовать до объявления
Или добавить декларацию g до f :
stdafx.h не сверху (специфично для VS)
Не стесняйтесь редактировать этот ответ.
Другие решения
Рассмотрим похожую ситуацию в разговоре. Представьте, что ваш друг говорит вам: «Боб идет на ужин», а ты не представляешь, кто такой Боб. Вы будете в замешательстве, верно? Твой друг должен был сказать: «У меня есть коллега по работе по имени Боб. Боб подходит к обеду». Теперь Боб объявлен, и вы знаете, о ком говорит ваш друг.
Компилятор выдает ошибку «необъявленный идентификатор», когда вы пытаетесь использовать какой-то идентификатор (который будет именем функции, переменной, класса и т. Д.), И компилятор не видит объявления для него. То есть компилятор понятия не имеет, о чем вы говорите, потому что раньше его не видел.
Если вы получаете такую ошибку в C или C ++, это означает, что вы не сказали компилятору о том, что вы пытаетесь использовать. Объявления часто встречаются в заголовочных файлах, поэтому, скорее всего, это означает, что вы не включили соответствующий заголовок. Конечно, может случиться так, что вы просто не помните, чтобы объявить сущность вообще.
или используя класс, как
В C и C ++ все имена должны быть объявлены перед использованием. Если вы попытаетесь использовать имя переменной или функции, которая не была объявлена, вы получите ошибку «необъявленный идентификатор».
Вы исправляете ошибки такого рода, проверяя, что функции и переменные объявлены до их использования. В случае printf вам нужно включить заголовочный файл <stdio.h> (или же <cstdio> в C ++).
Для стандартных функций я рекомендую вам проверить, например, этот справочный сайт , и найдите функции, которые вы хотите использовать. Документация для каждой функции говорит вам, какой заголовочный файл вам нужен.
означает, что вы используете имя printf но компилятор не видит, где было объявлено имя, и, соответственно, не знает, что это значит.
Любое имя, используемое в программе, должно быть объявлено до ее использования. Компилятор должен знать, что обозначает имя.
В этом конкретном случае компилятор не видит объявление имени printf , Как мы знаем (но не компилятор) это имя стандартной функции C, объявленной в заголовке <stdio.h> в C или в заголовке <cstdio> в C ++ и размещены в стандарте ( std:: ) и глобальный ( :: ) (не обязательно) пространства имен.
Поэтому, прежде чем использовать эту функцию, мы должны предоставить объявление ее имени компилятору путем включения соответствующих заголовков.
Например
C:
C ++:
Иногда причиной такой ошибки является простая опечатка. Например, давайте предположим, что вы определили функцию PrintHello
но в основном вы сделали опечатку и вместо PrintHello ты напечатал printHello с строчной буквы «р».
В этом случае компилятор выдаст такую ошибку, потому что он не видит объявление имени printHello , PrintHello а также printHello два разных имени, одно из которых было объявлено, а другое не объявлено, но используется в теле основного
Другая возможная ситуация: доступ к родительскому элементу (классу шаблона) в классе шаблона.
Это похоже на использование функции без ее объявления. заголовочный файл будет содержать
функция printf (). Включите заголовочный файл в вашу программу, это решение для этого.
Некоторые пользовательские функции могут также вызывать ошибки, если они не были объявлены перед использованием. Если
это используется во всем мире без проб.
В большинстве случаев, если вы уверены, что импортировали данную библиотеку, Visual Studio поможет вам с IntelliSense.
Версия: 1.36.1 (пользовательская настройка)
Фиксация: 2213894ea0415ee8c85c5eea0d0ff81ecc191529
Дата: 2019-07-08T22: 59: 35.033Z
Электрон: 4.2.5
Хром: 69.0.3497.128
Node.js: 10.11.0
V8: 6.9.427.31-электрон.0
ОС: Windows_NT x64 10.0.17134
Самый полезный комментарий
Если вы используете Arduino UNO (чип ATmega328P), попробуйте:
Если вы используете Arduino Leonardo (чип ATmega32U4), попробуйте:
Если вы используете Arduino Mega (чип ATmega2560), попробуйте:
Вот файл io.h в библиотеке AVR для справки, если вы используете другую плату AVR.
Все 6 Комментарий
в "configurations" в файле c_cpp_properties.json в папке .vscode. Или добавление "USBCON" в список, если "defines" уже существует.
Если вы используете Arduino UNO (чип ATmega328P), попробуйте:
Если вы используете Arduino Leonardo (чип ATmega32U4), попробуйте:
Если вы используете Arduino Mega (чип ATmega2560), попробуйте:
Вот файл io.h в библиотеке AVR для справки, если вы используете другую плату AVR.
То же для меня, но с:
TCCR2A
TCCR2B
TCNT2
OCR2A
WGM21
CS22
CS20
Код компилируется и выгружается нормально, но с ошибкой «Не определено».
С F12 появляется несколько файлов .h, кажется, что определение "__AVR_ATmega328P__" игнорируется.
У меня была аналогичная проблема, проблема с Serial действительно была решена путем добавления "USBCON" к defines , но у меня все еще были проблемы с такими идентификаторами, как DDRD неопределенный. (Написав этот ответ, я обнаружил, что ответ @jimaobian имеет такой же эффект.)
Добавьте следующие свойства в c_cpp_properties.json :
После некоторого исследования я обнаружил, что определение для DDRD можно найти в нескольких файлах (каждый из которых предназначен для другой версии MCU). Например, это определение из C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include\avr\iom328p.h ;
Вверху этого файла я нашел этот комментарий;
Таким образом, я взглянул на C:\Program Files (x86)\Arduino\hardware\tools\avr\avr\include\avr\io.h . Этот файл содержал следующий комментарий;
Этот файл заголовка включает соответствующие определения ввода-вывода для
устройство, указанное компилятором -mmcu =
переключатель командной строки. Это делается путем переадресации на соответствующий
файл <avr / io XXXX .h>, который должен
никогда не включаться напрямую. Некоторые имена регистров общие для всех
Устройства AVR определяются непосредственно в <avr / common.h> ,
который включен в <avr / io.h> ,
но большая часть деталей взята из соответствующего включаемого файла.
Обнаружив это, мне удалось найти в этой документации аргумент -mmcu . Основываясь на этой документации, я пришел к выводу, что мне нужно передать компилятору -mmcu=atmega328 чтобы он работал с Arduino с микроконтроллером ATmega328.
Теперь мой c_cpp_properties.json выглядит так;
У меня были проблемы, похожие на проблемы с @ Xring-git:
OUTPUT , PORTC ,
TCCR1A , (но не TCCR1B !), TCNT1 , OCR1A , WGM12 , CS10 , TIMSK1 , OCIE1A , TIMER1_COMPA_vect
все дают ошибки вроде
идентификатор "DDRC" не определен
которые не препятствуют компиляции / загрузке скетча.
Когда я открыл ./vscode/c_cpp_properties.json и изменил
Все эти ошибки исчезли.
Однако у меня все еще есть ошибки для функций noInterrupts , interrupts и ISR . Говорят конкретно:
Интересно, есть ли более систематический подход к их исправлению, также без редактирования c_cpp_properties.json для каждого эскиза.
Читайте также: