|
-24 / 3 / 1
Регистрация: 05.02.2013
Сообщений: 51
|
||||||||||||||||||||||||||
Большие странности при переименовании *.cpp => *.c10.10.2019, 15:03. Показов 1769. Ответов 16
Здравствуйте.
У меня есть знакомый (не правда ли, многие беседы в кабинете психоаналитика начинаются так же?) которого на учёбе мучают языком C (иначе это назвать нельзя). В результате когда я пытаюсь сделать его домашку у себя на компе, я вынужден писать ( в IDE VS 2019 ) всё в c-style, и переименовывать *.cpp файл в *.c И есть такая проблема. Вот я открываю шаблон консольног о проекта. Чуть чуть исправляю его, чтобы он соответствоввал учебной прогрмамме. Получаю проект (файл main.cpp) следующего вида:
потом я добавляю одну строчку - объявление (даже не оперделение) функции:
Затем я переименовываю файл (просто закрываю в студии tab с файлом, кликаю мышкой в solution explorer на этот файл и редактирую его название c main.cpp на main.c) Заметьте - в файле ни одного символа не поменялось! И в этот момент проект перестаёт компилироваться СТУДИЕЙ и вообще она находит в файле пять ошибок, начиная с
Еще одно наблюдение: если строка с объявлением функции будет без "передачи аргумента по ссылке" , то есть
Не может ли кто то объяснить, что Студия такого не понимает в *.c файлах, и как ей правильно дать по рукам? Может, есть какая то специальная магическая настройка студии, чтобы она могла работать с *.c файлами? Спасибо.
0
|
||||||||||||||||||||||||||
| 10.10.2019, 15:03 | |
|
Ответы с готовыми решениями:
16
Спящий режим большие странности Баг при переименовании формы Ошибка при переименовании пользователя |
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
||
| 10.10.2019, 15:30 | ||
|
SteeLHeaD, специально в стандарт залез:
0
|
||
|
-24 / 3 / 1
Регистрация: 05.02.2013
Сообщений: 51
|
|
| 10.10.2019, 15:36 [ТС] | |
|
Спасибо, что Вы заглянули в стандарт.
К сожалению, это не имеет отношения к проблеме, о которой я написал. Более того, в "настоящей" программе, на которой я столкнулся с проблемой - мой main был описан именно так как в стандарте. И ноль на массу. всё равно студия начинает беситься, если переименовать *.cpp в *.c.
0
|
|
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|||||
| 10.10.2019, 15:37 | |||||
|
0
|
|||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||
| 10.10.2019, 15:47 | ||||
.cpp - это исходник языка с++, а .c - исходник языка сиведь это прямиком проистекает из расширений файлов. соответственно, для компиляции .cpp запускается компилятор языка с++соответственно, для компиляции .c запускается компилятор языка снет ничего удивительного в том, что компилятор языка си не может скомпилировать код языка с++ например эта строчка: ведь в языке си нет никаких ссылок. проблема в прокладке между стулом и монитором.
1
|
||||
|
-24 / 3 / 1
Регистрация: 05.02.2013
Сообщений: 51
|
|
| 10.10.2019, 15:50 [ТС] | |
|
Я прошу прощения, возможно, я не совсем правильно объяснил проблему...
Моя проблема не связана с правильностью написания функции main(). Она связана с тем, что "как ты ни пиши функцию мейн, хоть как в стандарте, хоть как в темплейте студии - всё равно при переименовании файла студия находит непонятные ошибки в корректной программе, (которая нормально собирается из командной строки). Поэтому, наверное, моя проблема связана не с языком, а с настройкой студии". А чтобы продемонстрировать проблему - я прилагаю две картинки, на которых 1) не первой картинке - файл имеет расширени cpp, и всё хорошо. (и в файле используется main(int argc, char *argv[])) 2) на второй картинке - файл имеет расширение с, и в файле находятся ошибки. Возможно так же, что я не понял что в Вашем объяснении. Но я попробовал и варинат с функцией void main (void) {} - и не заметил, что это на что то влияет.
0
|
|
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|||||
| 10.10.2019, 15:54 | |||||
![]() Ну, вы же сами написали: &.В Си нету ссылок, неужели все так запущено, я уж думал вы загуглили.
1
|
|||||
|
-24 / 3 / 1
Регистрация: 05.02.2013
Сообщений: 51
|
|
| 10.10.2019, 15:58 [ТС] | |
|
Спасибо.
Я, правда, первый раз слышу о том, что в языке C (без плюсов) нет никакиз ссылок. А как в языке С устроена передача аргументов по ссылке? Может, есть какое то простое введение в тему? Просто обычный поиск приводит к руководствам по языку с++ (котрый с плюсами), а мне только что популярно объяснили, что это две большие разницы.
0
|
|
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|||||||
| 10.10.2019, 16:01 | |||||||
|
Передачу без копирования можно сделать (как и в С++) через указатель.
0
|
|||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||
| 10.10.2019, 16:02 | |||
|
0
|
|||
|
"C with Classes"
|
|
| 10.10.2019, 16:04 | |
|
0
|
|
|
-24 / 3 / 1
Регистрация: 05.02.2013
Сообщений: 51
|
|
| 10.10.2019, 16:05 [ТС] | |
|
ну, еще раз спасибо!
0
|
|
|
"C with Classes"
|
|
| 10.10.2019, 16:06 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 10.10.2019, 16:11 | |||
|
значит передавать аргументы по ссылкам там нельзя. потому что невозможно передать что-то по ссылке, которой не существует. не нужно брать вилку, и потом спрашивать на форумах: как сделать, что б из вилки вода не утекала. отсюда закономерный вопрос: нафига ты переименовал .cpp в .c ?
0
|
|||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|
| 10.10.2019, 16:15 | |
|
SteeLHeaD, в дополнение к вышесказанному:
в Си функция main должна иметь return statement, в С++ необязательно (не смотря на указание возвращаемого значения int). g++ - всегда обращается к компилятору С++, независимо от расширения. Соответственно ваша программа им всегда компилировалась как программа С++, поэтому это работало.
0
|
|
|
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
|
||||||
| 10.10.2019, 16:26 | ||||||
|
SteeLHeaD, ну сказали же: компилятор Си не понимает ссылок, поэтому строка
Добавлено через 3 минуты Не по теме: Ого! сколько наотвечали, пока немного отвлекся... Ну ничего, повторение - мать учения...
0
|
||||||
|
Вездепух
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,227
|
||
| 10.10.2019, 19:19 | ||
main не обязателен.
2
|
||
| 10.10.2019, 19:19 | |
|
Помогаю со студенческими работами здесь
17
Глюк при переименовании страницы Проблемы при переименовании форм в GUI Удаляются файлы при переименовании папки при переименовании стер расширение док При переименовании файла вылазит ошибка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|