170 похожих чатов

Возможно вам нужно читать из файла число, если файла нет,

то писать 1, в других случаях +1 от того, что там записано?

115 ответов

62 просмотра

да, именно это и нужно

Myrrrca
да, именно это и нужно

ДВА ФАЙЛА нужно (отрывать)

Ilya Zviagin
ДВА ФАЙЛА нужно (отрывать)

валидно? #include <stdio.h> #include <stdint.h> int main(void) { uint16_t amount = 1; FILE* config = fopen("./file.dat", "r+b"); if (config == NULL) { printf("Creating file.dat and writing 1\n"); FILE* create = fopen("./file.dat", "wb"); if (create == NULL) { perror("Idk whats happening"); return 1; } fwrite(&amount, sizeof(uint16_t), 1, create); fclose(create); return 1; } fread(&amount, sizeof(uint16_t), 1, config); ++amount; printf("%u\n", amount); rewind(config); fwrite(&amount, sizeof(uint16_t), 1, config); fclose(config); return 0; }

А чат про C++

Ilya Zviagin
С - часть с++

ты снова обманываешь!

xchg rax, rax Rabbit
ты снова обманываешь!

Никогда не обманываю, всегда говорю только правду

Ilya Zviagin
С - часть с++

с++ обратно совместим с си

Sailor
Только интерфейсы, не?

си код компилируется компилятором с++ практически в полном объеме

Ilya Zviagin
Никогда не обманываю, всегда говорю только правду

ты опять хочешь чтобы завелась шарманка про restrict?

Sailor
> Практически В этом проблема

ты не сможешь сказать что не скомпилируется или будет работать не правильно

ну, обьясни какие, это ведь важные и распространение вещи в си, раз такая проблема

Sailor
Массивы динамические

так, какая конструкция не будет компилироваться

Sailor
Массивы динамические

restrict Думаю этого достаточно

Sailor
restrict Думаю этого достаточно

без этого слова код будет компилироваться и работать

xchg rax, rax Rabbit
неа

#define restrict И нет проблем

Алексей Склемин
А если Extern C?

Так на то и он extern C :D

Sailor
И что с этого?

ну, это оптимизация процесса сборки, она никак не влияет на логику

Sailor
Так на то и он extern C :D

Но таки компилирует😂

Aniki Hi$ok@ 🌈 Z 🐀
ну, это оптимизация процесса сборки, она никак не ...

Про динамические массивы выше писал Их тоже не использовать?

Sailor
Про динамические массивы выше писал Их тоже не исп...

почему, они будут компилироваться и работать, это слово никак не влияет на код и логику

Aniki Hi$ok@ 🌈 Z 🐀
почему, они будут компилироваться и работать, это ...

Очень влияет, тут не про слово речь А про int n = 5; int b[n];

Aniki Hi$ok@ 🌈 Z 🐀
что это такое 🌚

VLA, массив переменной длины

Sailor
Очень влияет, тут не про слово речь А про int n ...

это не динамический массив и это не скомпилируется

idk
это не динамический массив и это не скомпилируется

Да! В плюсах не скопмириуется, без расширения компилятора А вот в Си - пожалуйста

Sailor
VLA, массив переменной длины

динамический массив, это массив размер которого может задаваться в рантайме. Ты называешь вещи не правильно

Aniki Hi$ok@ 🌈 Z 🐀
динамический массив, это массив размер которого мо...

А я не в рантайие задал размер массива? constexpr, define вроде не писал

Sailor
Да! В плюсах не скопмириуется, без расширения комп...

потому что си вообще в целом не против дописать за тебя const

Sailor
А я не в рантайие задал размер массива? constexpr,...

нет, компилятор просто увидел что n - литерал (нигде не меняется) и за тебя сделал его константой

idk
потому что си вообще в целом не против дописать за...

вот ответ почему оно скомпилируется

Sailor
О0 введи, сделай его слепым

размер массива известен во время компиляции, всегда. Если не известен ничего не скомпилируется, оказалось что компилятор умнее тебя

и даже ворнингов не будет? Мне кажется кто-то тут брешит и на си не соблюдает стандарт, а потом плюется что другой компилятор работает не так как тебе хочется

Sailor
int n; scanf(“%d”, &n); int b[n]; Пойдет?

О чем вообще речь. Это ill-formed программа на C++, так как размер массива, согласно стандарту, должен являться constant expression.

Eoan Ermine
О чем вообще речь. Это ill-formed программа на C++...

верно подметили, но не ill-formed программа на Си

Eoan Ermine
О чем вообще речь. Это ill-formed программа на C++...

То, что какие-то компиляторы поддерживают VLA — это дело этих компиляторов. Стандарт же говорит, что это не C++

Eoan Ermine
То, что какие-то компиляторы поддерживают VLA — эт...

Именно! Некоторые компиляторов С++ поддерживают VLA, но это расширение компилятора А в СИ - Стандарт

Eoan Ermine
То, что какие-то компиляторы поддерживают VLA — эт...

Реализации компиляторов не определяют язык C++. Они могут поддерживать хоть Haskell и компилировать его успешно.

Aniki Hi$ok@ 🌈 Z 🐀
и даже ворнингов не будет? Мне кажется кто-то тут ...

Технически - Я не вижу проблем. Получили некоторую цифру, и расширили стек вниз...

Говорит https://eel.is/c++draft/dcl.array > The constant-expression shall be a converted constant expression of type std::size_t

3.7.1 shall: An indication of a requirement on programming language standard or processors. Нарушение shall clause — нарушение требований. То есть, ill-formed программа

Размер массива известен до его декларации. Про тип переменных - не понял. Как ты собираешься это написать?

Aniki Hi$ok@ 🌈 Z 🐀
так, какая конструкция не будет компилироваться

В C++ более строгая типизация. В С++ есть много новых ключевых слов.

Eoan Ermine
Говорит https://eel.is/c++draft/dcl.array > The ...

Ну это так-то очевидно, потому что вы смотрите пункт, который объясняет следующую запись: D1 [ constant-expressionopt ] attribute-specifier-seqopt Это не доказывает абсолютно ничего.

Aniki Hi$ok@ 🌈 Z 🐀
стек расширить "вниз"

Да. Что не так.. внизу стек не ограничен. 😜

Eoan Ermine
3.7.1 shall: An indication of a requirement on pro...

Только вот к данной ситуации это никак не относится.

xchg rax, rax Rabbit
скомпилишь? https://godbolt.org/z/K8a4fP4ae

@MasterZiv сделай пожалуйста красиво, напиши свой царский дефайн

Eoan Ermine
Ну да. Это синтаксис массива.

Нет, вы опять врете, это всего лишь один из синтаксисов. Более того, увеличивать их количество компилятору не запрещено. Вы смотрите на запись A[B], где вам объясняют, что в данном слкчае значит B и что с ним нужно делать. Это совершенно не то, что мне нужно и никак не является аргументом в споре.

Egor Kulebyakin
Нет, вы опять врете, это всего лишь один из синтак...

И где в стандарте синтаксис массивов, отличный от T D1 [ constant-expression_opt] attribute-specifier-seq_opt? И где в стандарте сказано, что constant-expression может быть не constant expression?

Eoan Ermine
И где в стандарте синтаксис массивов, отличный от ...

> И где в стандарте синтаксис массивов, отличный от Буквально следующим пунктом. https://eel.is/c++draft/dcl.array#2 > И где в стандарте сказано, что constant-expression может быть не constant expression? Это и не должно быть нигде написано.

xchg rax, rax Rabbit
скомпилишь? https://godbolt.org/z/K8a4fP4ae

мне нужно сохранить в таком "массиве" ну, скажем, 50 мегабайт объектов

Извиняюсь, у меня сохранен другой драфт, нежели на сайтике. Следующий синтаксис — с пустыми квадратными скобками Должно быть написано. Стандарт определяет язык. То, что не определено стандартом — не часть языка

Aniki Hi$ok@ 🌈 Z 🐀
мне нужно сохранить в таком "массиве" ну, скажем, ...

к слову, там помимо fam много всего интересного, если ты уберёшь это структурку у тебя всё равно ничего не соберётся) даже если рестрикты уберёшь, даже если авто и регистр уберёшь

Eoan Ermine
Извиняюсь, у меня сохранен другой драфт, нежели на...

И опять же 3.7.1 shall: An indication of a requirement on programming language standard or processors. Есть constant-expession это не constant expression, то это нарушение требования

Eoan Ermine
И опять же 3.7.1 shall: An indication of a requir...

Утверждения с вашей стороны вида «когда стандарт требует, он на самом деле не требует» кажутся очень странными

Eoan Ermine
Извиняюсь, у меня сохранен другой драфт, нежели на...

> Извиняюсь, у меня сохранен другой драфт, нежели на сайтике. Вы мне скинули ссылку на этот сайт. > Стандарт определяет язык. А конкретный пункт, ссылку на который вы дали, определяет конкретную запись, которую вы, почему-то считаете аргументом в споре при том, что это совершенно не тот случай. > То, что не определено стандартом — не часть языка Не факт, опять же. Вам уже рассказали про расширения.

Eoan Ermine
И опять же 3.7.1 shall: An indication of a requir...

Вы не спали? У вас явно какие-то проблемы с пониманием моих сообщений.

Eoan Ermine
Утверждения с вашей стороны вида «когда стандарт т...

Я не делал такие утверждения. Вы точно следите за разговором?

Андрей-Будиловский Автор вопроса
Egor Kulebyakin
> Извиняюсь, у меня сохранен другой драфт, нежели ...

Расширения по определению диалект языка

Egor Kulebyakin
> Извиняюсь, у меня сохранен другой драфт, нежели ...

каков ваш тезис? что VLA являются частью C++?

Egor Kulebyakin
> Извиняюсь, у меня сохранен другой драфт, нежели ...

По ссылке приведено два синтаксиса: T D1 [ constant-expression_opt] attribute-specifier-seq_opt T D1 [ ] attribute-specifier-seq_opt Какой из них, вкупе с требованием the constant-expression shall be a converted constant expression of type std::size_t, разрешает нижеприведенный код? int n; std::cin >> n; int arr[n];

Egor Kulebyakin
Может являтся.

Нет, не являются, ты бредишь

Eoan Ermine
По ссылке приведено два синтаксиса: T D1 [ consta...

> Какой из них, вкупе с требованием the constant-expression shall be a converted constant expression of type std::size_t, разрешает нижеприведенный код? Это требование вообще-то есть только у одного из пунктов. Дальнейшие ответы не имеют смысла.

xchg rax, rax Rabbit
Нет, не являются, ты бредишь

пересечения есть, как и прямые отсылки. например offsetof

Egor Kulebyakin
> Какой из них, вкупе с требованием the constant-e...

Вы таки тролль! А в следующем пункте пустые скобки: []

Eoan Ermine
Вы таки тролль! А в следующем пункте пустые скобки...

Вы таки ппочитайте раздел стандарта, на который сами же ссылаетесь. Потом мы можем продолжить.

Egor Kulebyakin
> Какой из них, вкупе с требованием the constant-e...

dcl.array все-таки не описывает объявления массивов, когда в квадратных скобках не constant-expression, поэтому VLA это не well-formed код с точки зрения плюсового стандарта

Egor Kulebyakin
Где/как определяется well-formed'ность?

1) описано, как такие декларации себя ведут 2) не нарушаются требования (shall)

Vlad
1) описано, как такие декларации себя ведут 2) не ...

формально описано в http://eel.is/c++draft/intro#compliance.general-2

Vlad
1) описано, как такие декларации себя ведут 2) не ...

> 1) описано, как такие декларации себя ведут Если в документации к конкретному расширению написано, как оно себя ведет, это не считается? >2) не нарушаются требования (shall) Они в примере с VLA и не нарушаются же.

Egor Kulebyakin
> 1) описано, как такие декларации себя ведут Если...

у С++ две формы объявления массивов: 1) D1 [ constant-expression opt ] attribute-specifier-seq opt 2) D1 [ ] attribute-specifier-seq opt VLA синтаксически никак не вписывается во вторую форму, поэтому рассматриваем первую. на нее наложено следующее требование: The constant-expression shall be a converted constant expression of type std​::​size_t. (http://eel.is/c++draft/dcl.array#1.sentence-2) внимание на shall, то есть это требование (https://www.iso.org/sites/directives/current/part2/index.xhtml#_idTextAnchor082). VLA его нарушает. таким образом VLA для C++ переходит в разряд ill-formed. далее у нас есть сишный стандарт, который описывает поведение таких деклараций. так как в C++ это ill-formed, то плюсовый компилятор, который транслирует такую декларацию согласно сишному стандарту, не перестает быть conforming реализацией C++

Vlad
у С++ две формы объявления массивов: 1) D1 [ const...

> далее у нас есть сишный стандарт, который описывает поведение таких деклараций. так как в C++ это ill-formed, то плюсовый компилятор, который транслирует такую декларацию согласно сишному стандарту, не перестает быть conforming реализацией C++ Почему "далее"? Почему расширение по-вашему способно только "отменять стандартный ill-formed", то есть имеет как-будто меньший приоритет?

Egor Kulebyakin
> далее у нас есть сишный стандарт, который описыв...

https://eel.is/c++draft/intro.compliance#general-8 > A conforming implementation may have extensions (including additional library functions), provided they do not alter the behavior of any well-formed program. Implementations are required to diagnose programs that use such extensions that are ill-formed according to this International Standard. Having done so, however, they can compile and execute such programs. Если расширение что-то разрешает, это не отменяет того, что согласно стандарту код не является корректным.

Eoan Ermine
https://eel.is/c++draft/intro.compliance#general-8...

Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!

Eoan Ermine
https://eel.is/c++draft/intro.compliance#general-8...

Язык C++ определяется только одним стандартом. Документации к расширениям компиляторов (которые оные, согласно стандарту, могут иметь) не определяют язык C++.

Eoan Ermine
https://eel.is/c++draft/intro.compliance#general-8...

> это не отменяет того, что согласно стандарту код не является корректным. Это и не подтверждает, что он является ill-formed в какой-то имплементации С++. В этом пункте написано лишь про диагностику случаев, когда расширение используется, чтобы сделать поведение well-formed.

Eoan Ermine
Язык C++ определяется только одним стандартом. Док...

> Документации к расширениям компиляторов (которые оные, согласно стандарту, могут иметь) не определяют язык C++. С++ с расширениями все еще является С++, даже по стандарту.

Egor Kulebyakin
> Документации к расширениям компиляторов (которые...

то есть C++\CLI какой-нибудь это ISO C++ просто потому, что там все вписывается в conforming расширения? (предположим, что там нем non-conforming расширений)

Vlad
то есть C++\CLI какой-нибудь это ISO C++ просто по...

Это конкретная имплементация С++.

Я нашел начало

Андрей-Будиловский Автор вопроса
Vlad
у С++ две формы объявления массивов: 1) D1 [ const...

как можно создать статический массив оставив пустыми квадратные скобки: int a[]?

AnTINooBL
как можно создать статический массив оставив пусты...

Когда сразу его инициализируешь. Размер вычислится автоматически

Ilya Zviagin
Всё говно GCC собрал?

Не, это всё строго в рамках С11

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
У тебя в конфиге нигде нет deny all; или вообще любого deny?
Alexander Sherbakov
10
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Ребят, чет я уже не догоняю... Крч в коде на асм там происходит нечто вроде a+число (a+1, a+2 и т.д.). Но почему строка lea ecx, [edx+1] работает как a+1?? В edx берется адрес...
Alan 🔝 Бэброу
4
думаешь я не смогу также сделать? мне это просто не удобно
int 💳 𝙖𝙞𝙧 𝙗𝙞𝙜 𝙗𝙤𝙗 🔫 check bio / spam block / AFK / nohello.com / GMT+3
9
Карта сайта