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

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

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

115 ответов

177 просмотров

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

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
С - часть с++

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Денис Rabbit
неа

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

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

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

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

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

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...

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

Денис 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? Это и не должно быть нигде написано.

Денис 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, разрешает нижеприведенный код? Это требование вообще-то есть только у одного из пунктов. Дальнейшие ответы не имеют смысла.

Денис 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
у С++ две формы объявления массивов: 1) D1 [ const...

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

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

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

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта