Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Re: Вопросы по С/С++ (СИ)

Пт фев 08, 2019 16:17:11

А запустить отладку без перепрошивки никак ?

uldemir писал(а):Или хотя бы, чтобы при прошивке там записывались бы какие-то начальные установки.
Это нужно доку на компилятор курить. Смотреть как размещать данные по конкретному адресу.

Re: Вопросы по С/С++ (СИ)

Пт фев 08, 2019 16:45:41

Проще, наверное, при прошивке не стирать всю Flash-память, а только те страницы, в которые ложится прошивка

Re: Вопросы по С/С++ (СИ)

Пт фев 08, 2019 16:54:17

мм. не знаю. среда CodeComposerStudio. Может, вы с ним работали и можете подсказать как?

Проблема не в том, что при отладке флэш сносится. А то что при перепрошивке. Кажется, проще будет задействовать еще один EUSCI и на неё навесить какой SPI EEPROM. Не хочется в этот CCS особо вникать.

Добавлено after 4 minutes 30 seconds:
Shit. как всё просто оказалось. Когда делал 10 лабу (там как раз в верхнюю память надо было писать лог работы), вроде бы там данные не пропадали. А в моём проекте пропадают. Оказывается настройки проекта немного разные. Нашел галочку "Erase and download necessary segments only"

Re: Вопросы по С/С++ (СИ)

Пт фев 08, 2019 17:38:01

Собственно, о чём и говорилось.

Re: Вопросы по С/С++ (СИ)

Вс фев 17, 2019 21:29:32

Доброго времени суток. Проект состоит из нескольких файлов. В одной из файлов есть функция:
Код:
buf_push_array(uint8_t* pointer, uint8_t len, uint8_t* buf)

Ее прототип находиться в хидере, и заинклужен в другом файле.
Функция одним из параметров принимает pointer, на массив uint8_t , берет из него len елементов, и сует в буфер по указателю buf.
Вопрос: как имея указатель на массив uint8_t из другого файла проекта, получить длинну этого массива ВНУТРИ этой функции ?
Если беру sizeof массива, находясь в его файле, получаю конечно его размер, а если беру sizeof аргумента функции, получаю ясен пень размер 1 элемента uint8_t :roll:

Re: Вопросы по С/С++ (СИ)

Вс фев 17, 2019 21:48:01

Никак. Указатель не несёт с собой никаких данных, только адрес.

Re: Вопросы по С/С++ (СИ)

Вс фев 17, 2019 22:12:12

Никак...

Боль :cry:

Re: Вопросы по С/С++ (СИ)

Вс фев 17, 2019 22:15:02

А что мешает передавать размер массива через len? Он же вроде для того туда и поставлен - сказать, сколько байтов надо копировать.

Кстати, функция эта - почти стандартный memcpy, только аргументы по-другому расположены.

Re: Вопросы по С/С++ (СИ)

Вс фев 17, 2019 22:40:52

А что мешает передавать размер массива через len? ...

Я хочу, чтобы можно было копировать произвольное количество данных, а не весь массив. А дополнительно, знать размер массива хотел, чтобы сделать контроль (защиту от дурака) того, что пользователь функции не запросил данных больше, чем есть в массиве.

Re: Вопросы по С/С++ (СИ)

Пн фев 18, 2019 06:35:21

Вопрос: как имея указатель на массив uint8_t из другого файла проекта, получить длинну этого массива ВНУТРИ этой функции ?


Перейти на stl и передать вместо массива ссылку на объект типа vector или array. А от них уже брать размер.

Re: Вопросы по С/С++ (СИ)

Вт фев 19, 2019 05:55:47

Есть проект из 2 исходных файлов + 1 свой хидер. В обоих исходных файлах необходимо включение своего хидера. В одном из исходных файлов необходимо включение stdio.h + stdint.h, а в другом только stdio.h. Как сделать правильно: включить stdio.h + stdint.h в свой хидер, и подключить к обоим исходным файлам, или не включать их в свой хидер, и подключить в каждом исходнике только необходимые ему хидеры ?

Re: Вопросы по С/С++ (СИ)

Вт фев 19, 2019 06:29:07

формально правила хорошего тона требуют включать в исходник модуля только те хидеры, что необходимы для компиляции этого модуля.
а не формально - без разницы

Re: Вопросы по С/С++ (СИ)

Вт фев 19, 2019 07:12:13

формально ... не формально ...

А как поступаете в таких случаях Вы :))) ?

Re: Вопросы по С/С++ (СИ)

Вт фев 19, 2019 07:52:39

А как поступаете в таких случаях Вы :))) ?
Код должен быть написан так, чтобы включение "лишнего" заголовочного файла ни на что не влияло.

Re: Вопросы по С/С++ (СИ)

Вт фев 19, 2019 09:23:34

Пока_без_кота писал(а):А как поступаете в таких случаях Вы
начинаю я всегда именно так, как вам и посоветовал, т.е. "правильно". но по мере роста количества модулей растет и колчество связей между ними, и часто в конечном итоге получается "как всегда": в исходнике список на полторы страницы из подключаемых заголовков...
периодически делаю "рефакторинг"...
VladislavS писал(а):Код должен быть написан так, чтобы включение "лишнего" заголовочного файла ни на что не влияло
это правильно сказано. если заключать тело любого заголовочника в "дефайны безопасности", как рекомендуется, то хоть в 250 местах приинклюживай - ничего страшного не произойдет. но в конечном итоге это способствует именно тому бардаку, к которому я и прихожу в своей деятельности :oops:

Re: Вопросы по С/С++ (СИ)

Вт фев 19, 2019 20:34:58

VladislavS, ARV - благодарю.

Re: Вопросы по С/С++ (СИ)

Вт фев 19, 2019 20:45:37

по мере роста количества модулей растет и колчество связей между ними, и часто в конечном итоге получается "как всегда": в исходнике список на полторы страницы из подключаемых заголовков
по-хорошему надо при таком положении дел сооружать эдакие "макромодули", хоть как-то группирующие мелкие и светящие наружу своими интерфейсами. Но всегда лень, да :facepalm:

Re: Вопросы по С/С++ (СИ)

Вт фев 19, 2019 20:55:26

Только не хидеры, а хедеры. А то как то уж совсем неприлично.)

Re: Вопросы по С/С++ (СИ)

Ср фев 20, 2019 15:20:32

Скажите пожалуйста, правильно ли я понимаю массивы в Си


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

unsigned long int button [4][4];

Здесь более или менее понятно, что создается массив в памяти, который для простоты понимания является двумерным, у которого 4 строки и 4 столбца. Т.е. 16 ячеек, которые по 32 бита, или 16 слов, 16 элементов.

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

button [0][0] = 132;

Т.е. Первый элемент считается от нуля, а строки при объявлении массива считаются от 1? И тогда последний элемент массива будет у меня

button [3][3] ???

Re: Вопросы по С/С++ (СИ)

Ср фев 20, 2019 16:14:34

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