- Remove From My Forums
-
Question
-
I am using visual studio 2008 and i’ve read the other responses to no avail. Here’s my code:
#include <stdio.h>
int main(void)
{
int counter;
int gallons;
int miles;
int totalGallons;
int totalMiles;
int avgGallons;
int avgMiles;
float average;
totalGallons = 0;
totalMiles = 0;
counter = 1;
printf («Enter the gallons used (-1 to end): «);
scanf («%d», &gallons);
while (gallons != -1) {
printf («n Enter the miles driven: «);
scanf («%d», &miles);
printf («n The miles/gallon for this tank is %.2 fn», miles/gallons);
counter++;
totalGallons = totalGallons + gallons;
totalMiles = totalMiles + miles;
avgGallons = totalGallons/counter;
avgMiles = totalMiles/counter;
printf («Enter the gallons used (-1 to end): «);
}
printf («The overall average miles/gallon was %.2fn», avgMiles/avgGallons);
return 0;
}
Nothing seems to work. Please help.
Answers
-
Hi,
According to your description, I think you have an issue about your codes. Could you tell me the meaning of “Nothing seems to work”. Does it mean your
code cannot work correctly?Visual C++ can compile C code directly, and I have built your code successfully on my side. Here is my project and file. Can you rebuild on your Visual Studio? If
not , it may a configuration issue. You can reinstall your Visual Studio.http://cid-ae2442667686801e.office.live.com/self.aspx/.Documents/T1.rar
In additional, I have some suggestion about your codes:
1, There is a blank between your %.2 and f, so it cannot print the result which you want.
2, According to your codes, I think you may want to input -1 to end input or exit your application, so I have change some places in your codes and add some notes.
I hope my suggestion can help you to solve your issue. If you have any other issues, please feel free and post to the MSDN forum.
Best Regards.
Rob
Rob Pan [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.-
Marked as answer by
Wednesday, March 30, 2011 8:12 AM
-
Marked as answer by
-
i faced the same problem before, i think it is because you use wrong project type
here, try this
*btw i am using VC++ 2010 express, the might be bit a different in the interface
1) create a new project, select win32 console application
2) in the solution explorer, right click the source file folder and add a new item (C++ file)
3) paste your code and compile, it should be able to run
-
Marked as answer by
Rob Pan
Wednesday, March 30, 2011 8:13 AM
-
Marked as answer by
Содержание
- Ошибка компилятора C3861
- Remarks
- Примеры
- Неопределенный идентификатор
- Идентификатор не в области
- Требуется квалификация пространства имен
- Устаревшая функция, вызываемая
- ADL и дружественные функции
- Русские Блоги
- Mr.J — Ошибка компиляции языка C C3861
- идентификатор: Идентификатор не найден
- замечание
- примеров
- Неопределенный идентификатор
- Идентификатор вне области видимости
- Требуемая квалификация пространства имен
- Устаревший вызов функции
- ADL и функции друзей
- Интеллектуальная рекомендация
- Реализация оценки приложения iOS
- JS функциональное программирование (е)
- PWN_JarvisOJ_Level1
- Установка и развертывание Kubernetes
- На стороне многопроцессорного сервера — (2) *
- error c3861 идентификатор не найден
- Примечания Remarks
- Примеры Examples
- Неопределенный идентификатор Undefined identifier
- Идентификатор не находится в области Identifier not in scope
- Требуется квалификации пространства имен Namespace qualification required
- Устаревшие функции с именем Obsolete function called
- ADL и дружественные функции ADL and friend functions
- Решение
- Другие решения
- 2 ответа 2
- error c3861 идентификатор не найден
- Примечания Remarks
- Примеры Examples
- Неопределенный идентификатор Undefined identifier
- Идентификатор не находится в области Identifier not in scope
- Требуется квалификации пространства имен Namespace qualification required
- Устаревшие функции с именем Obsolete function called
- ADL и дружественные функции ADL and friend functions
- Решение
- Другие решения
- 2 ответа 2
Ошибка компилятора C3861
Компилятору не удалось разрешить ссылку на идентификатор, даже используя поиск, зависящий от аргументов.
Чтобы устранить эту ошибку, сравните использование идентификатора с объявлением идентификатора для регистра и орфографии. Убедитесь, что операторы разрешения области и директивы пространства имен using используются правильно. Если идентификатор объявлен в файле заголовка, убедитесь, что заголовок включен до ссылки на идентификатор. Если идентификатор должен быть видимым извне, убедитесь, что он объявлен в любом исходном файле, который его использует. Кроме того, убедитесь, что объявление или определение идентификатора не исключается директивами условной компиляции.
Изменения для удаления устаревших функций из библиотеки среды выполнения C в Visual Studio 2015 могут вызвать C3861. Чтобы устранить эту ошибку, удалите ссылки на эти функции или замените их безопасными альтернативами, если таковые есть. Дополнительные сведения см. в разделе «Устаревшие функции».
Если ошибка C3861 появляется после миграции проекта из более старых версий компилятора, могут возникнуть проблемы, связанные с поддерживаемыми версиями Windows. Visual C++ больше не поддерживает создание программ для Windows 95, Windows 98, Windows ME, Windows NT и Windows 2000. Если макросы WINVER _WIN32_WINNT назначены одной из этих версий Windows, необходимо изменить макросы. Дополнительные сведения см. в разделе «Изменение WINVER и _WIN32_WINNT «.
Примеры
Неопределенный идентификатор
В следующем примере возникает ошибка C3861, так как идентификатор не определен.
Идентификатор не в области
Следующий пример приводит к возникновению ошибки C3861, так как идентификатор виден только в области его определения файла, если он не объявлен в других исходных файлах, использующих его.
Исходный файл C3861_a1.cpp :
Исходный файл C3861_a2.cpp :
Требуется квалификация пространства имен
Для классов исключений в стандартной библиотеке C++ требуется std пространство имен.
Устаревшая функция, вызываемая
Устаревшие функции удалены из библиотеки CRT.
ADL и дружественные функции
Следующий пример приводит к возникновению ошибки C3767, так как компилятор не может использовать поиск, зависящий от FriendFunc аргументов:
Чтобы устранить ошибку, объявите друга в области класса и определите его в области пространства имен:
Источник
Русские Блоги
Mr.J — Ошибка компиляции языка C C3861
идентификатор: Идентификатор не найден
Даже с независимыми поисками, связанными с переменными, компилятор не может разрешить ссылки на идентификаторы.
замечание
Чтобы исправить эту ошибку, используйтеидентификаторНа случай и написание идентификатора декларации. верификацияОператор разрешения диапазонаИ пространство имениспользование директивыИспользуется правильно. Если идентификатор объявлен в заголовочном файле, убедитесь, что заголовок включен перед ссылочным идентификатором. Если идентификатор должен быть видимым извне, убедитесь, что он объявлен во всех исходных файлах, которые его используют. Кроме того, пожалуйста, проверьте идентификатор декларации или определение не исключает принятиеИнструкция условной компиляции。
Изменения для удаления устаревших функций из библиотеки времени выполнения C в Visual Studio 2015 могут вызвать C3861. Чтобы устранить эту ошибку, удалите ссылки на эти функции или замените их безопасными альтернативными методами, если таковые имеются. Для получения дополнительной информации, пожалуйста, обратитесь кУстаревшая функция。
Если проект отображает ошибку компилятора C3861 из старой версии после миграции, это может вызвать проблемы, связанные с поддерживаемыми версиями Windows. Visual C ++ больше не поддерживает Windows 95, Windows 98, Windows ME, Windows NT или Windows 2000. Если выWINVERили_WIN32_WINNTМакросы назначены одной из этих версий Windows, вы должны изменить макросы. Для получения дополнительной информации, пожалуйста, обратитесь кИзменить WINVER и _WIN32_WINNT。
примеров
Неопределенный идентификатор
В следующем примере создается C3861, поскольку идентификатор не определен.
Идентификатор вне области видимости
В следующем примере создается C3861, поскольку идентификатор виден только в его определении и области действия файла, если он не объявлен в других исходных файлах, которые его используют.
Требуемая квалификация пространства имен
Классы исключений в стандартной библиотеке C ++ std Пространство имен.
Устаревший вызов функции
Устаревшие функции были удалены из библиотеки CRT.
ADL и функции друзей
В следующем примере создается C3767, поскольку аргумент, который не может использовать компилятор, зависит от поиска FriendFunc :
Чтобы исправить эту ошибку, объявите область действия класса Friend и определите ее в области пространства имен:
Для проблемы, с которой я столкнулся, сначала была определена функция, а затем использована . (Первая)
Интеллектуальная рекомендация
Реализация оценки приложения iOS
Есть два способа получить оценку приложения: перейти в App Store для оценки и оценка в приложении. 1. Перейдите в App Store, чтобы оценить ps: appid можно запросить в iTunes Connect 2. Встроенная оцен.
JS функциональное программирование (е)
Давайте рассмотрим простой пример, чтобы проиллюстрировать, как используется Reduce. Первый параметр Reduce — это то, что мы принимаем массив arrayOfNums, а второй параметр — функцию. Эта функция прин.
PWN_JarvisOJ_Level1
Nc первый Затем мы смотрим на декомпиляцию ida Перед «Hello, World! N» есть уязвимая_функция, проверьте эту функцию после ввода Видно, что только что появившийся странный адрес является пе.
Установка и развертывание Kubernetes
На самом деле, я опубликовал статью в этом разделе давным -давно, но она не достаточно подробно, и уровень не является ясным. Когда я развернулся сегодня, я увидел его достаточно (хотя это было успешн.
На стороне многопроцессорного сервера — (2) *
Обработка сигнала Родительский процесс часто очень занят, поэтому вы не можете просто вызвать функцию waitpid, чтобы дождаться завершения дочернего процесса. Затем обсудите решение. Обратитесь .
Источник
error c3861 идентификатор не найден
«идентификатор«: идентификатор не найден ‘identifier‘: identifier not found
Компилятору не удалось разрешить ссылку на идентификатор даже при поиске с зависимостью от аргументов. The compiler was not able to resolve a reference to an identifier, even using argument-dependent lookup.
Чтобы устранить эту ошибку, сравните использование идентификатор на написание и регистр объявления идентификатора. To fix this error, compare use of identifier to the identifier declaration for case and spelling. Убедитесь, что операторов разрешения области и пространство имен директив using используются правильно. Verify that scope resolution operators and namespace using directives are used correctly. Если идентификатор объявлен в файле заголовка, убедитесь, что заголовок включен до ссылки на идентификатор. If the identifier is declared in a header file, verify that the header is included before the identifier is referenced. Если идентификатор должен быть видимый извне, убедитесь, что он объявлен в все файлы исходного кода, который его использует. If the identifier is meant to be externally visible, make sure that it is declared in any source file that uses it. Также проверьте, что идентификатор объявления или определения не исключен с директивы условной компиляции. Also check that the identifier declaration or definition is not excluded by conditional compilation directives.
Изменения, чтобы удалить устаревшие функции из библиотеки времени выполнения C в Visual Studio 2015 может привести к C3861. Changes to remove obsolete functions from the C Runtime Library in Visual Studio 2015 can cause C3861. Чтобы устранить эту ошибку, удалите ссылки на эти функции или замените их безопасных альтернатив, если таковые имеются. To resolve this error, remove references to these functions or replace them with their secure alternatives, if any. Дополнительные сведения см. в разделе устаревшие функции. For more information, see Obsolete Functions.
При появлении ошибки C3861 после миграции проекта из более старой версии компилятора, возможно, возникли проблемы, связанные с поддерживаемыми версиями Windows. If error C3861 appears after project migration from older versions of the compiler, you may have issues related to supported Windows versions. Visual C++ больше не поддерживает создание программ для Windows 95, Windows 98, Windows ME, Windows NT и Windows 2000. Visual C++ no longer supports targeting Windows 95, Windows 98, Windows ME, Windows NT or Windows 2000. Если ваши макросы WINVER или _WIN32_WINNT предназначены для одной из этих версий Windows, необходимо изменить такие макросы. If your WINVER or _WIN32_WINNT macros are assigned to one of these versions of Windows, you must modify the macros. Дополнительные сведения см. в разделе изменение WINVER и _WIN32_WINNT. For more information, see Modifying WINVER and _WIN32_WINNT.
Примеры Examples
Неопределенный идентификатор Undefined identifier
Следующий пример приводит к возникновению ошибки C3861, так как идентификатор не определен. The following sample generates C3861 because the identifier is not defined.
Идентификатор не находится в области Identifier not in scope
Следующий пример приводит к возникновению ошибки C3861, так как идентификатор отображается в области видимости файла его определения, только в том случае, если она не объявлена в других исходных файлах, которые ее используют. The following sample generates C3861 because an identifier is only visible in the file scope of its definition, unless it is declared in other source files that use it.
Требуется квалификации пространства имен Namespace qualification required
Классы исключений в стандартной библиотеке C++ требует std пространства имен. Exception classes in the C++ Standard Library require the std namespace.
Устаревшие функции с именем Obsolete function called
Устаревшие функции были удалены из библиотеки CRT. Obsolete functions have been removed from the CRT library.
ADL и дружественные функции ADL and friend functions
В следующем примере возникает C3767, так как компилятор не может использовать поиск по аргументам для FriendFunc : The following sample generates C3767 because the compiler cannot use argument dependent lookup for FriendFunc :
Чтобы устранить эту ошибку, объявите friend в области видимости класса и определите его в области видимости пространства имен: To fix the error, declare the friend in class scope and define it in namespace scope:
У меня есть файл «HSlider.h», он использует «Draw.h», где я определил свои функции для их использования.
Но компилятор говорит, что я не определил их (идентификатор не найден). Я искал на форумах похожую ошибку, но это не помогло.
Я работаю в VS 2015 Communty.
ПРИМЕР ОШИБКИ:
Ошибка C3861 DrawGUIBox: идентификатор не найден
Try2 c: users lel Documents visual studio 2015 projects try2 try2 hslider.h 50
,
HSlider.h
Draw.h
Решение
Проблема не в вашем исходном коде. Проблема в том, что ваш файл решения Visual Studio (в указанной вами ссылке) поврежден. В файле решения есть ссылки на проект под названием Try2, но этот проект не существует в решении.
Чтобы это исправить, сделайте следующее.
Откройте файл Help.sln с помощью notepad ++, и вы увидите строку
Это означает, что должен быть подпроект под названием Try2, но он не существует. В вашем архиве субпроект фактически называется «Помощь». Итак, измените строку на:
После этого просмотрите папки x64 в своем решении и удалите все оставшиеся файлы, относящиеся к Try2.
ИЛИ, создайте новое пустое решение и скопируйте исходные файлы .cpp и .h (только) по одному в новое решение.
(Существует также отдельная проблема, когда отсутствует файл Offsets.h, но я не могу с этим помочь.)
Другие решения
Я нашел ответ сам.
Проблема была в круговом включении.
И это произошло потому, что я определил свои классы в файле заголовка вместо файла .cpp.
После этого и правильного перемещения заголовков я исправил это за считанные минуты.
Использую библиотеку math.h и в ней для нахождения кубического корня есть функция cbrt(); Только вот при компиляции Visual Studio говорит: error C3861: cbrt: идентификатор не найден.
Как решать проблему?
2 ответа 2
Правильно он споткнулся. Потому что эта функция находиться в другом заголовчном файле — amp_math.h (пруф).
Не знаю, с чем связано отсутствие этой функции, но попробуйте вот так:
Вообще cbrt есть в С99 и в C++TR1, который, кажется, как раз вошел в C++11. Ну а упрекнуть vc++ в хорошей поддержке этого стандарта до сих пор довольно трудно
Источник
error c3861 идентификатор не найден
«идентификатор«: идентификатор не найден ‘identifier‘: identifier not found
Компилятору не удалось разрешить ссылку на идентификатор даже при поиске с зависимостью от аргументов. The compiler was not able to resolve a reference to an identifier, even using argument-dependent lookup.
Чтобы устранить эту ошибку, сравните использование идентификатор на написание и регистр объявления идентификатора. To fix this error, compare use of identifier to the identifier declaration for case and spelling. Убедитесь, что операторов разрешения области и пространство имен директив using используются правильно. Verify that scope resolution operators and namespace using directives are used correctly. Если идентификатор объявлен в файле заголовка, убедитесь, что заголовок включен до ссылки на идентификатор. If the identifier is declared in a header file, verify that the header is included before the identifier is referenced. Если идентификатор должен быть видимый извне, убедитесь, что он объявлен в все файлы исходного кода, который его использует. If the identifier is meant to be externally visible, make sure that it is declared in any source file that uses it. Также проверьте, что идентификатор объявления или определения не исключен с директивы условной компиляции. Also check that the identifier declaration or definition is not excluded by conditional compilation directives.
Изменения, чтобы удалить устаревшие функции из библиотеки времени выполнения C в Visual Studio 2015 может привести к C3861. Changes to remove obsolete functions from the C Runtime Library in Visual Studio 2015 can cause C3861. Чтобы устранить эту ошибку, удалите ссылки на эти функции или замените их безопасных альтернатив, если таковые имеются. To resolve this error, remove references to these functions or replace them with their secure alternatives, if any. Дополнительные сведения см. в разделе устаревшие функции. For more information, see Obsolete Functions.
При появлении ошибки C3861 после миграции проекта из более старой версии компилятора, возможно, возникли проблемы, связанные с поддерживаемыми версиями Windows. If error C3861 appears after project migration from older versions of the compiler, you may have issues related to supported Windows versions. Visual C++ больше не поддерживает создание программ для Windows 95, Windows 98, Windows ME, Windows NT и Windows 2000. Visual C++ no longer supports targeting Windows 95, Windows 98, Windows ME, Windows NT or Windows 2000. Если ваши макросы WINVER или _WIN32_WINNT предназначены для одной из этих версий Windows, необходимо изменить такие макросы. If your WINVER or _WIN32_WINNT macros are assigned to one of these versions of Windows, you must modify the macros. Дополнительные сведения см. в разделе изменение WINVER и _WIN32_WINNT. For more information, see Modifying WINVER and _WIN32_WINNT.
Примеры Examples
Неопределенный идентификатор Undefined identifier
Следующий пример приводит к возникновению ошибки C3861, так как идентификатор не определен. The following sample generates C3861 because the identifier is not defined.
Идентификатор не находится в области Identifier not in scope
Следующий пример приводит к возникновению ошибки C3861, так как идентификатор отображается в области видимости файла его определения, только в том случае, если она не объявлена в других исходных файлах, которые ее используют. The following sample generates C3861 because an identifier is only visible in the file scope of its definition, unless it is declared in other source files that use it.
Требуется квалификации пространства имен Namespace qualification required
Классы исключений в стандартной библиотеке C++ требует std пространства имен. Exception classes in the C++ Standard Library require the std namespace.
Устаревшие функции с именем Obsolete function called
Устаревшие функции были удалены из библиотеки CRT. Obsolete functions have been removed from the CRT library.
ADL и дружественные функции ADL and friend functions
В следующем примере возникает C3767, так как компилятор не может использовать поиск по аргументам для FriendFunc : The following sample generates C3767 because the compiler cannot use argument dependent lookup for FriendFunc :
Чтобы устранить эту ошибку, объявите friend в области видимости класса и определите его в области видимости пространства имен: To fix the error, declare the friend in class scope and define it in namespace scope:
У меня есть файл «HSlider.h», он использует «Draw.h», где я определил свои функции для их использования.
Но компилятор говорит, что я не определил их (идентификатор не найден). Я искал на форумах похожую ошибку, но это не помогло.
Я работаю в VS 2015 Communty.
ПРИМЕР ОШИБКИ:
Ошибка C3861 DrawGUIBox: идентификатор не найден
Try2 c: users lel Documents visual studio 2015 projects try2 try2 hslider.h 50
,
HSlider.h
Draw.h
Решение
Проблема не в вашем исходном коде. Проблема в том, что ваш файл решения Visual Studio (в указанной вами ссылке) поврежден. В файле решения есть ссылки на проект под названием Try2, но этот проект не существует в решении.
Чтобы это исправить, сделайте следующее.
Откройте файл Help.sln с помощью notepad ++, и вы увидите строку
Это означает, что должен быть подпроект под названием Try2, но он не существует. В вашем архиве субпроект фактически называется «Помощь». Итак, измените строку на:
После этого просмотрите папки x64 в своем решении и удалите все оставшиеся файлы, относящиеся к Try2.
ИЛИ, создайте новое пустое решение и скопируйте исходные файлы .cpp и .h (только) по одному в новое решение.
(Существует также отдельная проблема, когда отсутствует файл Offsets.h, но я не могу с этим помочь.)
Другие решения
Я нашел ответ сам.
Проблема была в круговом включении.
И это произошло потому, что я определил свои классы в файле заголовка вместо файла .cpp.
После этого и правильного перемещения заголовков я исправил это за считанные минуты.
Использую библиотеку math.h и в ней для нахождения кубического корня есть функция cbrt(); Только вот при компиляции Visual Studio говорит: error C3861: cbrt: идентификатор не найден.
Как решать проблему?
2 ответа 2
Правильно он споткнулся. Потому что эта функция находиться в другом заголовчном файле — amp_math.h (пруф).
Не знаю, с чем связано отсутствие этой функции, но попробуйте вот так:
Вообще cbrt есть в С99 и в C++TR1, который, кажется, как раз вошел в C++11. Ну а упрекнуть vc++ в хорошей поддержке этого стандарта до сих пор довольно трудно
Источник
lethe1337 2 / 2 / 0 Регистрация: 22.07.2020 Сообщений: 175 |
||||
1 |
||||
18.05.2022, 22:12. Показов 989. Ответов 4 Метки си++ (Все метки)
В общем у меня есть задание: перенести программу с Си на С++. С плюсами знаком +- 2 часа, вот что слепил
При компиляции выдает следующие ошибки: Код 1>List.cpp 1>C:UsersFinsourcereposListListList.cpp(105,20): error C3861: Insert: идентификатор не найден 1>C:UsersFinsourcereposListListList.cpp(107,9): error C3861: Print: идентификатор не найден 1>C:UsersFinsourcereposListListList.cpp(108,9): error C3861: Inverse_sublist: идентификатор не найден 1>C:UsersFinsourcereposListListList.cpp(110,9): error C3861: Print: идентификатор не найден 1>C:UsersFinsourcereposListListList.cpp(119,20): error C3861: Append: идентификатор не найден 1>C:UsersFinsourcereposListListList.cpp(121,9): error C3861: Print: идентификатор не найден 1>C:UsersFinsourcereposListListList.cpp(122,9): error C3861: Inverse_sublist: идентификатор не найден 1>C:UsersFinsourcereposListListList.cpp(124,9): error C3861: Print: идентификатор не найден Помогите исправить =)
__________________
0 |
zss Модератор 12641 / 10135 / 6102 Регистрация: 18.12.2011 Сообщений: 27,170 |
||||
19.05.2022, 09:07 |
2 |
|||
Сообщение было отмечено lethe1337 как решение Решение
1 |
2 / 2 / 0 Регистрация: 22.07.2020 Сообщений: 175 |
|
19.05.2022, 11:10 [ТС] |
3 |
zss, Вылезло это Код 1>List.obj : error LNK2005: "struct List __cdecl Append(struct List,int)" (?Append@@YA?AUList@@U1@H@Z) уже определен в Class.obj 1>List.obj : error LNK2005: "struct Node * __cdecl Create_node(int)" (?Create_node@@YAPEAUNode@@H@Z) уже определен в Class.obj 1>List.obj : error LNK2005: "int __cdecl Get_Value(struct List,int)" (?Get_Value@@YAHUList@@H@Z) уже определен в Class.obj 1>List.obj : error LNK2005: "struct Node * __cdecl Get_node(struct List const &,int)" (?Get_node@@YAPEAUNode@@AEBUList@@H@Z) уже определен в Class.obj 1>List.obj : error LNK2005: "struct List __cdecl Insert(struct List,int)" (?Insert@@YA?AUList@@U1@H@Z) уже определен в Class.obj 1>List.obj : error LNK2005: "void __cdecl Inverse_sublist(struct List,int,int)" (?Inverse_sublist@@YAXUList@@HH@Z) уже определен в Class.obj 1>List.obj : error LNK2005: "struct List __cdecl Pop_front(struct List)" (?Pop_front@@YA?AUList@@U1@@Z) уже определен в Class.obj 1>List.obj : error LNK2005: "void __cdecl Print(struct List)" (?Print@@YAXUList@@@Z) уже определен в Class.obj 1>List.obj : error LNK2005: "void __cdecl Swap(struct List,struct Node * const,struct Node * const)" (?Swap@@YAXUList@@QEAUNode@@1@Z) уже определен в Class.obj 1>C:UsersFinsourcereposListx64DebugList.exe : fatal error LNK1169: обнаружен многократно определенный символ - один или более 1>Сборка проекта "List.vcxproj" завершена с ошибкой. ========== Сборка: успешно: 0, сбой: 1, в актуальном состоянии: 0, пропущено: 0========== Добавлено через 4 минуты
0 |
lethe1337 2 / 2 / 0 Регистрация: 22.07.2020 Сообщений: 175 |
||||||||
19.05.2022, 21:14 [ТС] |
4 |
|||||||
zss, А можете объяснить, пожалуйста, в чем была ошибка? Добавлено через 24 минуты
Header.cpp
в List.cpp код тот же, что и после main(), но при компиляции вылазят те же ошибки, что и в прошлый раз: идентификатор не найден. Как это можно исправить?
0 |
zss Модератор 12641 / 10135 / 6102 Регистрация: 18.12.2011 Сообщений: 27,170 |
||||
20.05.2022, 06:17 |
5 |
|||
Сообщение было отмечено lethe1337 как решение Решение
нужно реализовать через классы
Я не проверял правильность методов.
1 |
Sla |
А книгу купил? |
||
Мы все учились понемногу… Чему-нибудь и как-нибудь. |
Душа в рай
Гость |
Конечно Бьерн Страуструп но она подразумевает хотябы какойто навык програмирования и много проф. терминологии в нём поэтому ине и нужна ваша помощь. |
||
|
Вад
Команда клуба |
Душа в рай, Страуструп новичку тяжеловат, пожалуй, будет. Хотя я затруднюсь что-то посоветовать взамен — мне в своё время некому было посоветовать, и я изучал этот язык по смеси Страуструпа, «Бархатного пути» и ещё чего-то. Некоторые вещи потом пришлось переучивать Вообще же, начнём с того, что ты знаешь. А именно, не привязываясь к языку, каковы твои знания по части, скажем, написания алгоритмов? Твоя фраза в названии «не имею никакого опыта в программировании»несколько расплывчата. Возможно, прежде чем осваивать язык, придётся сначала изучать самые азы, без которых к языку подступаться мало пользы? Ну то есть, параллельно это тоже можно делать, но вопрос ведь в том, нужен ли тебе просто справочник, описывающий средства языка, с которыми ты дальше уже будешь знать что делать, или же тебе нужны материалы, которые обучают, скажем, написанию алгоритмов или выделению сущностей в ООП. |
||
|
Finch
Спокойный Пролетал мимо |
Книга Бьерн Страуструп , конечно классика, но не для начинаюших. Она хороша как справочник, но не для обучения. Посмотри темы по форуму, много раз уже поднималась тема учебников для изучения С++. Вот хотя бы тут https://forum.shelek.ru/index.php/topic,10315.0.html есть ссылки на многие учебные материалы. #include <stdio.h> void main() Запускаеш на компиляцию и выполнение. |
||
Не будите спашяго дракона. |
Душа в рай
Гость |
Под фразой «ничего» подразумевается что я с програмированием в принципе не знаком(ну правда бэйсик изучали одножды,но я ничего от туда не помню) тоесть мне надо начинать с самых озов и с самого начала.Правильно было подмечено то что Страуструп хорош как справочник и именно по этому я и зарегестрировался на этом сайте,чтобы преобрести базовые знания и хоть немного разобраться в терминологии книги.По поводу компиляции и запуска,какие клавиши запускают эти процессы? |
||
|
Душа в рай
Гость |
И ещё на визуал 2006 я просто в нете наткнулся на рекламу и по запарке записал его так у меня 2005.И спосибо что начали мне помагать. |
||
|
Душа в рай
Гость |
Знаешь Finch создал проект-CRL Console Application,ввёлданную тобой программу ответ был такой |
||
|
Душа в рай
Гость |
теперь с stdafx.h выдаёт такое int main() |
||
|
Sands
Помогающий |
Душа в рай, Если посмотреть внимательно, то Finch в своем примере подключает <stdio.h> а ты пытался поключить «stdio.f». Так вот в библиотеке <stdio.h> и находится функция «printf». |
||
|
Вад
Команда клуба |
Душа в рай, коль уж начинать с азов, думаю, тебе полезно будет почитать вот эту темку: https://forum.shelek.ru/index.php/topic,13271.0.html |
||
|
Душа в рай
Гость |
знаешь Sands я мог ошибиться когда посал именно сюда,а так визуал предлагает заменть stdio.h на stdafx.h.Первый случай показан на прикреплённом ресунке,во втором ответ такой |
Dimka
Деятель
|
Не нужен тебе stdafx.h. Простой способ: при создании проекта поставить галочку Empty Project. Сейчас на имеющемся проекте либо отключить эту навязчивую гадость (тут со мной некоторые поспорить захотят — не надо, была уже тема) в свойствах проекта, либо в самом деле включить stdafx.h в программу, а stdio.h в stdafx.h. |
||
Программировать — значит понимать (К. Нюгард) |
Душа в рай
Гость |
а где её отключают,я в английйском не очень.Можно и просто по подробней описать как до этих свойств проекта добраться.И вообще довайте пройдём всё с самого что ни есть нуля(т.к. япроект создавал полагаясь на своё крайне скудное знание английского).Давайте зделаем так,напишите поэтапно как создавать этот пустой консольный С++ проект(или какой другой предложите),как что надо или ненадо отключать или включать в общем что и как по подробней.Потом я введу предложеный Finchем текст и выдам что получилось. |
||
|
Душа в рай
Гость |
консольный файл CLR Console Application using namespace System; int main(array<System::String ^> ^args) |
||
|
Джон
просто
|
Всё приехали. Душа в рай, ты вобще-то понимаешь что ты делаешь? Или просто тычешь куда-нить — авось получится. Ты сначала определись с платформой, то что привёл это тн .NET платформа — почитай на досуге. Твоя проблема в том, что ты не знаешь IDE — интегрированную среду разработки, каковой и является VisualStudio. Те тебе нужно сначала её изучить, как создавать проекты, какие они бывают и тд и тп. А уж потом только переходить к языку. Иначе у тебя даже не дрова наломанные получатся, а щепки наструганные. «Это этот, как его… Волюнтаризм!» (c) Волюнтаризм — стремление реализовать желанные цели без учёта объективных обстоятельств и возможных последствий. |
||
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. |
Душа в рай
Гость |
Джон-ты прав и ежли так киньте какую нить ссылку по этой теме. |
||
|
Джон
просто
|
А в гугле пробовал смотреть? Хотя конечно я порекомендовал бы тебе именно бумажную книгу — как настольный справочник. Но я ессно не знаю твои возможности: http://www.dialektika.com/books/5-8459-0462-5.html В принципе для начального знакомства тебе подойдёт любая на эту тему, посмотри, что есть в досягаемой близи. Кстати как с аглицким? На нём больше инфа можно надыбать — например MSDN : http://msdn2.microsoft.com/ru-ru/visualc/aa336412.aspx зы Вот тут посмотри — общая инфа по IDE, только там для продолжения зарегиться надо: В электронном виде посмотри на натахауз. |
||
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. |
Джон
просто
|
Хмммм… Её просто гугля одной из первых выдала. Это сайт по бейсику, а не по С++. А зарегится — на форум не заходил? Там регистрация есть. Но я бы поискал всё-таки по С++. Или лень матушка? |
||
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. |
Душа в рай
Гость |
Да нет не лень,просто всё что находил по С++ это справочники типа моего Страуструпа.Там нет ничего по поводу среды и интерфейса. |
||
|
Душа в рай
Гость |
извините что так долго не было меня,были проблемы с системой. |
||
|
Вад
Команда клуба |
Инкапсуляция — упрятывание (в частности, данных) от внешнего доступа. Инструкция: Открываешь VS, File->New…->Project, в диалоге в дереве выбираешь «Visual C++»->»Win32 Console Application», задаёшь директорию и имя, жмёшь ОК, далее в диалоге выбираешь «Application Settings» и там, если нужен пустой проект, ставишь флаг «Empty project». Если не нужна прекомпиляция заголовков, убираешь флаг «precompiled headers». Жмёшь Finish. Собственно, всё. |
||
|
Dimka
Деятель
|
Инкапсуляция — упрятывание (в частности, данных) от внешнего доступа. Тут сразу встаёт вопросы: зачем? и что такое «внешний»? Поэтому дополню: инкапсуляция — это инструмент управления сложностью разрабатываемой программы. Когда программа (вне зависимости от языка программирования) разделяется на составные части (функции, структуры, модули, классы, объекты, компоненты и т.д. — в каждом языке своё), эти части стараются сделать максимально независимыми друг от друга (инкапсулированными). |
||
Программировать — значит понимать (К. Нюгард) |
Душа в рай
Гость |
благодарю Вад и ещё тут «ост» |
||
|
Вад
Команда клуба |
dimka, согласен Всегда подразумевается, что прячут чьи-то данные от кого-то, чтобы тот не привязывался к деталям внутренней структуры (или просто не лез не в своё дело, чтоб не испортить чего). |
||
|
Душа в рай
Гость |
dimka,ты прав на счёт незнакомых слов но блин интересно всётаки чё это значит, хотябы для расширения кругозора пусть даже не имея какойто практической пользы.Всё равно в дальнейшем я с ними столкнусь. А теперь тех проблемы где отыскать окно в которое надо вбивать программу.Я прошёл по инструкции Вада проект был создан но окна для текста программы нет. |
||
|
Dimka
Деятель
|
Не уверен, как лучше подходить к этим вещам: сначала пропускать такие детали, как та же инкапсуляция, разобравшись сначала с построением алгоритмов, или снимать все вопросы сразу. По крайней мере, сам я учился по этакой спиральной модели, периодически возвращаясь к ранее непонятным принципам. Это хорошо, когда ты заранее знаешь, какие слова можно пропускать, а по каким нужно в первую очередь искать пояснения. Но в этом-то обычно вся проблема и заключается . Такое знание — составная часть методологии образования — выражается в учебном плане. Без него обучение подобно тыканию вслепую по разным направлениям без возможности охватить умом всю картину и понять взаимосвязи, найти конец и начало в хитросплетениях теорий и концепций. И чтобы достичь успеха при таком подходе, нужно иметь недюжинное упорство и неиссякаемый энтузиазм. Судя по заголовку, у автора темы эти качества имеются |
||
Программировать — значит понимать (К. Нюгард) |
Ошибка компилятора C3861
Компилятору не удалось разрешить ссылку на идентификатор, даже используя поиск, зависящий от аргументов.
Remarks
Чтобы устранить эту ошибку, сравните использование идентификатора с объявлением идентификатора для регистра и орфографии. Убедитесь, что операторы разрешения области и директивы пространства имен using используются правильно. Если идентификатор объявлен в файле заголовка, убедитесь, что заголовок включен до ссылки на идентификатор. Если идентификатор должен быть видимым извне, убедитесь, что он объявлен в любом исходном файле, который его использует. Кроме того, убедитесь, что объявление или определение идентификатора не исключается директивами условной компиляции.
Изменения для удаления устаревших функций из библиотеки среды выполнения C в Visual Studio 2015 могут вызвать C3861. Чтобы устранить эту ошибку, удалите ссылки на эти функции или замените их безопасными альтернативами, если таковые есть. Дополнительные сведения см. в разделе «Устаревшие функции».
Если ошибка C3861 появляется после миграции проекта из более старых версий компилятора, могут возникнуть проблемы, связанные с поддерживаемыми версиями Windows. Visual C++ больше не поддерживает создание программ для Windows 95, Windows 98, Windows ME, Windows NT и Windows 2000. Если макросы WINVER _WIN32_WINNT назначены одной из этих версий Windows, необходимо изменить макросы. Дополнительные сведения см. в разделе «Изменение WINVER и _WIN32_WINNT «.
Примеры
Неопределенный идентификатор
В следующем примере возникает ошибка C3861, так как идентификатор не определен.
Идентификатор не в области
Следующий пример приводит к возникновению ошибки C3861, так как идентификатор виден только в области его определения файла, если он не объявлен в других исходных файлах, использующих его.
Исходный файл C3861_a1.cpp :
Исходный файл C3861_a2.cpp :
Требуется квалификация пространства имен
Для классов исключений в стандартной библиотеке C++ требуется std пространство имен.
Устаревшая функция, вызываемая
Устаревшие функции удалены из библиотеки CRT.
ADL и дружественные функции
Следующий пример приводит к возникновению ошибки C3767, так как компилятор не может использовать поиск, зависящий от FriendFunc аргументов:
Чтобы устранить ошибку, объявите друга в области класса и определите его в области пространства имен:
Источник
Error c3861 printf идентификатор не найден
Answered by:
Question
I think I already know the answer to this but I’ll ask the question anyway.
When I attempt to compile the following code:
//Print the numbers 1 through 20
for (count = 1; count «%dn» , count);
I get the message: error C3861: ‘printf’: identifier not found
Does this message have to do with the changes made to Visual C++?
Am I missing something obvious?
Answers
Or turn off precompiled headers. The gory details of this problem is that on a /Yu build (that is a build that use a PCH) the compiler ignores anything before the header file that marks the end of the PCH region. We are in the process of adding a warning for this situation — this new warning will show up in the next release of Visual C++.
Источник
ошибка C3861: «система»: идентификатор не найден
Я только начал новый win32 консольное приложение в VS 2010 и установить Additional options собственность на precompiled header в предстоящем мастере.
На основе один из моих предыдущих вопросов Я решил использовать следующий основной прототип:
Я также изменил Character Set свойство проекта к Use Multi-Byte Character Set ,
Но следующий код:
Будет выдавать эти две ошибки:
У меня был такой же опыт, и ошибок не было!
Кто-нибудь может подсказать мне, что не так?
Решение
В C ++ вы должны включить соответствующий заголовочный файл, который содержит объявление функции, чтобы использовать ее, иначе вы получите ошибку компилятора о том, что идентификатор не найден.
В случае с system функция, это определено в stdlib.h заголовочный файл
Итак, в начало вашего файла кода (или в вашем предварительно скомпилированном заголовочном файле) добавьте строку
(Вы используете угловые скобки вместо кавычек, потому что stdlib.h найден ли заголовок в том месте, о котором ранее сообщалось инструменту сборки; это включает в себя каталоги системных заголовков и другие каталоги, которые ваша конфигурация сборки специально требует.)
Помимо этого я сильно рекомендую против используя либо многобайтовый набор символов (все новые приложения Windows должны поддерживать Unicode), либо system функция, особенно system(«pause») ,
Источник
Идентификатор ошибки С++ не найден для функции?
это мои первые шаги в C++, и я пытаюсь запустить функцию, которую мне нужно использовать
но я получаю эту ошибку:
Код серьезности Описание Ошибка подавления строки файла проекта C3861 «findAndRotateBlankNumbers»: идентификатор не найден ConsoleApplication2 c:userssourcereposconsoleapplication2consoleapplication2consoleapplication2.cpp 29
//ConsoleApplication2.cpp: определяет точку входа для консольного приложения. //
Я изменил порядок кода так, как вы сказали:
но теперь я получаю другие ошибки:
Код степени серьезности Описание Состояние подавления строки файла проекта C4703 потенциально неинициализированная переменная локального указателя «первая» используется ConsoleApplication2 c:userssourcereposconsoleapplication2consoleapplication2consoleapplication2.cpp 52
Ваша функция findAndRotateBlankNumbers определяется после того, как вы хотите вызвать ее в main . Поэтому компилятор еще не знает, что эта функция существует при компиляции основной функции. Чтобы исправить это, вы можете либо
- переместите функцию findAndRotateBlankNumbers выше main добавьте объявление функции вверху и оставьте определение там, где оно: void findAndRotateBlankNumbers(char* ptr);
Что касается вашей второй ошибки:
Компилятор жалуется, что вы first объявляете переменную, не присваивая ей значение при инициализации. Вы должны дать ему разумное значение по умолчанию, например char* first = nullptr;
То же самое с char* last = nullptr;
Если ваш компилятор не поддерживает nullptr , вместо этого используйте NULL ;
Источник
ошибка C3861: «система»: идентификатор не найден
Я только начал новый win32 консольное приложение в VS 2010 и установить Additional options собственность на precompiled header в предстоящем мастере.
На основе один из моих предыдущих вопросов Я решил использовать следующий основной прототип:
Я также изменил Character Set свойство проекта к Use Multi-Byte Character Set ,
Но следующий код:
Будет выдавать эти две ошибки:
У меня был такой же опыт, и ошибок не было!
Кто-нибудь может подсказать мне, что не так?
Решение
В C ++ вы должны включить соответствующий заголовочный файл, который содержит объявление функции, чтобы использовать ее, иначе вы получите ошибку компилятора о том, что идентификатор не найден.
В случае с system функция, это определено в stdlib.h заголовочный файл
Итак, в начало вашего файла кода (или в вашем предварительно скомпилированном заголовочном файле) добавьте строку
(Вы используете угловые скобки вместо кавычек, потому что stdlib.h найден ли заголовок в том месте, о котором ранее сообщалось инструменту сборки; это включает в себя каталоги системных заголовков и другие каталоги, которые ваша конфигурация сборки специально требует.)
Помимо этого я сильно рекомендую против используя либо многобайтовый набор символов (все новые приложения Windows должны поддерживать Unicode), либо system функция, особенно system(«pause») ,
Источник
implicit declaration of function- предупреждение или ошибка?
От: |
Fedorchenko Aleksey
|
||
Дата: | 22.03.04 09:45 | ||
Оценка: |
Все время работал с MS VC++ (сначала 6, сейчас .NET 2003), но решил попробовать и gcc (MinGW 3.1).
Так вот встретил в последнем неприятную для себя особенность: gcc лишь предупреждает о неявном объявлении функции, в то время как MS VC++ выдает ошибку об этом.
Для примера код:
int main()
{
printf("Bug or feature?");
return 0;
}
При компиляции даст следующие результаты…
MinGW 3.1:
main.c: In function `main’:
main.c:3: warning: implicit declaration of function `printf’
Linking…CTest.exe — 0 error(s), 1 warning(s)
.NET 2003:
d:ProgsMyOwnCPPtestmain.cpp(3) : error C3861: ‘printf’: identifier not found, even with argument-dependent lookup
Build log was saved at «file://d:ProgsMyOwnCpptestDebugBuildLog.htm»
test — 1 error(s), 0 warning(s)
Т.е. MinGW 3.1 знает о том, что эта функция есть где-то в crt и после этого предупреждения без явного включения <stdio.h> вызывает ее нормально!
Прав ли в данном случае MinGW 3.1?
Re: implicit declaration of function- предупреждение или оши
От: |
PK Sly |
http://www.vocord.ru/ | |
Дата: | 22.03.04 09:58 | ||
Оценка: |
Ошибка.
По стандарту С++, такая программа не должна компилироваться.
Решение проблемы — включить заголовок с описанием функции
#include <stdio.h>
VAX/VMS rulez!
Re[2]: implicit declaration of function- предупреждение или
От: |
Fedorchenko Aleksey
|
||
Дата: | 22.03.04 10:02 | ||
Оценка: |
Здравствуйте, PK Sly, Вы писали:
PS>По стандарту С++, такая программа не должна компилироваться.
Можно привести выдержку из стандарта с указанием главы?
PS>Решение проблемы — включить заголовок с описанием функции
Проблема искусственная, т.к. я знаю что надо включать, но просто и компилятор не должен делать за меня неявное включение заголовочных файлов, имхо
Re: implicit declaration of function- предупреждение или оши
От: |
achp |
||
Дата: | 22.03.04 10:06 | ||
Оценка: |
Здравствуйте, Fedorchenko Aleksey, Вы писали:
FA>Прав ли в данном случае MinGW 3.1?
В языке Си (до стандарта’1999) допускается неявное объявление функции при первом использовании.
Не обявленная явно функция считается объявленной так:
int f();
Соответственно, в языке Си (до стандарта’1999) приведенная программа корректна.
Да здравствует ИМХО!
Re[2]: implicit declaration of function- предупреждение или
От: |
Fedorchenko Aleksey
|
||
Дата: | 22.03.04 10:23 | ||
Оценка: |
Здравствуйте, achp, Вы писали:
A>В языке Си (до стандарта’1999) допускается неявное объявление функции при первом использовании.
А в действующем стандарте C уже отменена что ли такая возможность?
Re[3]: implicit declaration of function- предупреждение или
От: |
achp |
||
Дата: | 22.03.04 10:31 | ||
Оценка: |
Здравствуйте, Fedorchenko Aleksey, Вы писали:
A>>В языке Си (до стандарта’1999) допускается неявное объявление функции при первом использовании.
FA>А в действующем стандарте C уже отменена что ли такая возможность?
Увы, не помню точно. Но вроде бы отменили, вместе с правилом неявного int.
Да здравствует ИМХО!
Re[2]: implicit declaration of function- предупреждение или
От: |
Vamp
|
||
Дата: | 22.03.04 10:39 | ||
Оценка: |
A>Соответственно, в языке Си (до стандарта’1999) приведенная программа корректна.
Не нахожу, что функция вызов фукнкции printf(«afff») подходит под сигнатуру int printf();
Да здравствует мыло душистое и веревка пушистая.
Re[3]: implicit declaration of function- предупреждение или
От: |
achp |
||
Дата: | 22.03.04 10:43 | ||
Оценка: |
Здравствуйте, Vamp, Вы писали:
V>Не нахожу, что функция вызов фукнкции printf(«afff») подходит под сигнатуру int printf();
Почему же? Вполне подходит.
В Си следующие два объявления имеют различный смысл:
int f(); /* Аргументы могут быть какими угодно */
int g(void); /* Аргументов быть не должно */
Да здравствует ИМХО!
Re[4]: implicit declaration of function- предупреждение или
От: |
Vamp
|
||
Дата: | 22.03.04 10:45 | ||
Оценка: |
Да, что-то такое смутно припоминается… Неправ я, похоже…
Да здравствует мыло душистое и веревка пушистая.
Re[4]: implicit declaration of function- предупреждение или
От: |
Lorenzo_LAMAS |
||
Дата: | 22.03.04 10:49 | ||
Оценка: |
A>В Си следующие два объявления имеют различный смысл:
A>
A>int f(); /* Аргументы могут быть какими угодно */
A>
Вот ведь гадость-то какая!
А как в К&R типы параметров объявлялись (или могли объявляться), видел?
Of course, the code must be complete enough to compile and link.
Re[5]: implicit declaration of function- предупреждение или
От: |
achp |
||
Дата: | 22.03.04 10:53 | ||
Оценка: |
Здравствуйте, Lorenzo_LAMAS, Вы писали:
L_L>Вот ведь гадость-то какая!
L_L>А как в К&R типы параметров объявлялись (или могли объявляться), видел?
int f(x, y, z)
double x, y;
long z;
{
/* ... */
}
Да здравствует ИМХО!
Re[3]: implicit declaration of function- предупреждение или
От: |
PK Sly |
http://www.vocord.ru/ | |
Дата: | 22.03.04 10:56 | ||
Оценка: |
PS>>По стандарту С++, такая программа не должна компилироваться.
FA>Можно привести выдержку из стандарта с указанием главы?
Наверное, можно
Я как раз сейчас читал Мейерса, у него упоминалось, что в С++ запрещено неявное определение функций (в отличии от «чистого» С). Я ему верю, хотя, возможно, он и ошибается
PS>>Решение проблемы — включить заголовок с описанием функции
FA>Проблема искусственная, т.к. я знаю что надо включать, но просто и компилятор не должен делать за меня неявное включение заголовочных файлов, имхо
А он и не включал. Он решил, что это — неявное определение функции
VAX/VMS rulez!
Re[6]: implicit declaration of function- предупреждение или
От: |
Lorenzo_LAMAS |
||
Дата: | 22.03.04 11:07 | ||
Оценка: |
A>
A>int f(x, y, z)
A>double x, y;
A>long z;
A>{
A> /* ... */
A>}
A>
Вот-вот, об этом я и говорил. Только я ошибся, насчет K&R. Это и в С99 можно.
Of course, the code must be complete enough to compile and link.
От: |
PK Sly |
http://www.vocord.ru/ | |
Дата: | 22.03.04 11:09 | ||
Оценка: |
A>Почему же? Вполне подходит.
A>В Си следующие два объявления имеют различный смысл:
A>
A>int f(); /* Аргументы могут быть какими угодно */
A>int g(void); /* Аргументов быть не должно */
A>
Первое в «чистом» С до 99 года первое определение вообще не корректно.
Второе — верно.
А сколько угодно каких угодно аргументов делается так:
int f(...);
VAX/VMS rulez!
От: |
Lorenzo_LAMAS |
||
Дата: | 22.03.04 11:23 | ||
Оценка: |
Чем обоснуешь свое утверждение про «неверно»?
В С89 С99 это верно.
Of course, the code must be complete enough to compile and link.
Re[5]: implicit declaration of function- предупреждение или
От: |
jazzer
|
Skype: enerjazzer | |
Дата: | 22.03.04 11:35 | ||
Оценка: |
Здравствуйте, Lorenzo_LAMAS, Вы писали:
L_L>А как в К&R типы параметров объявлялись (или могли объявляться), видел?
Взгляни на заголовки X Window (или даже просто на маны) — и увидишь кучу такого
Что было в этом во всём этом хорошо — что не нужно было писать одно и то же тыщу раз:
ведь как хорошо было бы вместо
f(const std::map<std::string, MyClass> &x, const std::map<std::string, MyClass> &y, const std::map<std::string, MyClass> &z)
писать
f(const std::map<std::string, MyClass> &x, &y, &z)
Re[6]: implicit declaration of function- предупреждение или
От: |
achp |
||
Дата: | 22.03.04 13:30 | ||
Оценка: |
Здравствуйте, jazzer, Вы писали:
J>
J>f(const std::map<std::string, MyClass> &x, &y, &z)
J>
Ну, в Си так вточности не писали. Если бы K & R стиль спроецировать на Си++, получилось бы так:
int f(x, y, z)
const std::map<std::string, MyClass> &x, &y, &z;
{
// ...
}
При этом нужно отметить, что сделать объявление функции без определения с каким бы то ни было указанием списка параметров в Си от К-Р вообще возможности не было.
Да здравствует ИМХО!
Re[7]: implicit declaration of function- предупреждение или
От: |
jazzer
|
Skype: enerjazzer | |
Дата: | 22.03.04 13:41 | ||
Оценка: |
Здравствуйте, achp, Вы писали:
A>Ну, в Си так вточности не писали.
Это я знаю
я имею в виду принцип.
мне лично не нравится, что можно написать при объявлении переменных
int i, j, k, l, m;
а аналогичное объявление параметров функции нужно записывать как
f(int i, int j, int k, int l, int m)
а не в сходной форме
f(int i, j, k, l, m)
Re[8]: implicit declaration of function- предупреждение или
От: |
Lorenzo_LAMAS |
||
Дата: | 22.03.04 13:42 | ||
Оценка: |
Наверное, этому есть какое-то мудрое объяснение.
Of course, the code must be complete enough to compile and link.
Re[8]: implicit declaration of function- предупреждение или
От: |
achp |
||
Дата: | 22.03.04 13:44 | ||
Оценка: |
Здравствуйте, jazzer, Вы писали:
J>мне лично не нравится, что можно написать при объявлении переменных
J>
J>int i, j, k, l, m;
J>
J>а аналогичное объявление параметров функции нужно записывать как
J>
J>f(int i, int j, int k, int l, int m)
J>
Мне в общем-то без разницы. Я уже стабильно привык писать:
int i;
int j;
int k;
int f(
int i,
int j,
int k);
Да здравствует ИМХО!
- Переместить
- Удалить
- Выделить ветку
Пока на собственное сообщение не было ответов, его можно удалить.