Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Проблем с код на C

Featured Replies

Здравейте, имам следният проблем с една програма на C и не мога да разбера какво иска.

Стартирам я на Codeblocks и Visual Studio 2017 и изписва следните грешки:(снимка)

Ето това е кодът:http://codepad.org/7XqUeHdr

Untitled.png

В ред 166 N трябва да е обявен за константа   const int N =200;   щото компилатора на микромеките се сърди

  • Автор
преди 3 минути, ined написа:

ами пробвай с int const N = 200; или сменяй компилатора

Същото, на кодблокс няма проблем, само този warning някаква идея за кодблокс? Лошото е, че в университета работим на visual studio и преподавателят не иска никакви грешки и предупреждения, иначе програмата си работи..

преди 8 минути, professed написа:

Същото, на кодблокс няма проблем, само този warning някаква идея за кодблокс? Лошото е, че в университета работим на visual studio и преподавателят не иска никакви грешки и предупреждения, иначе програмата си работи..

За Visual Studio трябва да използваш constexpr. Ние в университета ползвахме CodeBlocks.
Warning-ите общо взето са напомняния и рядко са важни.
Трябва да дадеш парчето код с редовете, на които е Warning-а, за да видим за какво точно иде реч.

Редактирано от Гост (преглед на промените)

  • Автор
преди 31 минути, Johnny B написа:

За Visual Studio трябва да използваш constexpr. Ние в университета ползвахме CodeBlocks.
Warning-ите общо взето са напомняния и рядко са важни.
Трябва да дадеш парчето код с редовете, на които е Warning-а, за да видим за какво точно иде реч.

Преподавателят не иска и warnings..

 

4.png

Функцията се декларира преди да се използва и warning-а ще изчезне.

преди 2 часа, professed написа:

Здравейте, имам следният проблем с една програма на C и не мога да разбера какво иска.

Стартирам я на Codeblocks и Visual Studio 2017 и изписва следните грешки:(снимка)

Ето това е кодът:http://codepad.org/7XqUeHdr

Untitled.png

На чисто Ц по стандарт не е грешка функцията да се вика преди да се декларира. На Ц++ по стандарт трябва да се декларира. Обаче може компилатора да компилира кода, като имплицитно декларира всички функции в началото и след това може да издаде или да не издаде предупреждение, че имплицитното деклариране не е по стандарт. 

  • Автор

Справих се с грешките, compile е успешен, но като опитам да я стартирам се появява друга грешка..

4.png

Цитат

Thats a linker problem.

Try to change Properties -> Linker -> System -> SubSystem (in Visual Studio).

from Windows (/SUBSYSTEM:WINDOWS) to Console (/SUBSYSTEM:CONSOLE)

Ето ти.

За проблема с

	int N = 200;
	int i;
	char buffer[N]; 

В C99 са въведени VLAs (variable length arrays) които са точно това.Очевидно използваш античен компилатор който не го поддържа това.Решение е да замениш int n = 200; с макро

#define BUFFER_SIZE (200)

и после

char buffer[BUFFER_SIZE];

друго решение е да го направиш с динамична памет

char* buffer = malloc(N);

 

  • 3 седмици по-късно...

M$ винаги нарушават стандартите и затова общо взето имат visual пред C/C++, щото може да се очакват техни магарии. Студиото е пълен боклук, ако искаш да се занимаваш със С/С++ не го ползвай.

https://connect.microsoft.com/VisualStudio/feedback/details/333273/request-for-c99-vla-in-visual-studio

преди 1 час, bvbfan написа:

M$ винаги нарушават стандартите

Офтопик: Но пък линукс ядрото е точно по стандарта, компилира се без никакъв проблем на твърдо C99 или изобщо на някакъв компилатор, дето не поддържа gcc extensions...

 

Тва все едно да имаш Ролс-Ройс и да кажеш: Мани я тая дърта кола. Без проблеми се компилира, да се ползват разширения или не - няма значение. Въпросът е, че може да пишеш както искаш, за разлика от всичко насрано от М$.

преди 5 минути, bvbfan написа:

Без проблеми се компилира, да се ползват разширения или не - няма значение.

 Стандартът си е стандарт. Или го спазваш или не. Линукското ядро не го спазва. Всъщност в линукс дистрибуциите нищо стандартно няма. То противоречи на концепцията. То това дето ти каза:

преди 11 минути, bvbfan написа:

Въпросът е, че може да пишеш както искаш,

е достатъчно. Стандартът ти казва как да правиш нещо, не да го правиш, както си знаеш.

Забравих кой беше казал: "Стандартите са много хубаво нещо, трябва всеки да си има един" :D Та и ти така, майкрософт не спазват C стандарта, ама линукс ядрото е ролс ройс и там може...

Разбира се, че може, те ти дават кода, М$ те чукат отзад, щом ти харесва повече.

Имаш много голям проблем с това да имаш всичко + разширение, с това да нямаш нещо.

преди 18 минути, bvbfan написа:

Имаш много голям проблем с това да имаш всичко + разширение, с това да нямаш нещо.

Аз персонално нямам никакъв проблем, освен с двойния стандарт, който прилагаш, когато обсъждаш нестандартна имплементация, което и отбелязах. :D
Нестандартното разширение не е бонус, когато си принуден да го ползваш. То е точно от нещата, каквито стандартите са предназначени да избягват. Ако не го разбираш, няма какво да си говорим повече. По отношение на придържането към стандартите, което ти беше отправната точка за обвиненията и MS компилатора, и Линукс ядрото са от един дол дренки...

Аз не виждам да е двоен стандарта, просто потърси, ако не пишеш на С++ и ще видиш, колко стандарт се нарушава от М$, това че Линукс ядрото ползва разширения няма нищо общо със случая.

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.