Pull to refresh
12
0
Виталий Оразов @viordash

Программист

Send message

полностью отказаться финансировать власти могут себе позволить только круглые сироты.

А блокировки, направленные на простых людей - это тоже правильно, если эти простые люди живут в простой стране, которая просто бомбит другую страну.

интересно, а мирные жители, которых 8 лет бомбили имеют ли право также считать? Те коллективная ответственность это правильно для всех сторон?

а код может не пройти ревью, согласен. Я не пропускаю подобные хаки

Какую из переменных, в упоминаемом мной коде вы считаете не выровненым?

Код не упадет, так как переменная uint64_t x выровнена естественным образом, и в printf передается адрес на эту переменную. А как внутри printf уже будут обрабатываться эти байты не очень важно.

уверен что и иар с MISRA норм соберет, но наверно для самой printf возникнет нюанс, какое-то из правил касалось переменного кол-ва аргументов

А кросс-платформенное решение я уже опубликовал в статье, вот оно краткое и лаконичное:

ваш вариант с

printf ("%.8s\n", (char*)&x);

тоже такой же кросс платформенный, но имхо более понятный, так как не потребует рефакторинга.

Единственная проблема в обоих решениях это BE/LE, а это можно обойти директивой препроцессора, каким-нибудь #ifdef__BYTE_ORDER__ , или compile-time проверкой через определение положения не нулевого байта в переменной int32 == 1.

Дело в том что uint64_t* и char*

вы пишете именно про uint64_t* (указатель на uint64_t)? как может быть фиксированная длина у одного указателя, а у другого нет?

оптимизация? я про адреса

Вы молодец, и ваши статьи нужные. Спасибо

jtag в основном хорошо помогает в отладке.

Ранее пробовал в данной связки и в принципе довольно не плохо себя показало.

извините, но я не понял вас.
Основной посыл, что вместо использования goto, аллоцировать/открывать до отдельного метода, а освобождать/закрывать после него. Это позволяет внутри метода не писать сложные if-ы, и выходить из метода в произвольном месте
вариант для вашего примера
void MemProcess(void *mem) {
	FILE *f = OpenFile(1);
	if (FileErr(f)) {
		return;
	}
	Func1(mem, data);
	Func2(f, mem);
	CloseFile(f);

	f = OpenFile(2);
	if (FileErr(f)) {
		return;
	}
	Func3(mem);
	Func2(f, mem);	
}

void SomeProcess(int *data) {
	void *mem = AllocateMemory();
	MemProcess(mem);
	FreeMemory(mem);
}
вместо goto можно же использовать отдельные методы, да и читабельность повысится.

void SomeProcess(int* data) {
    if (Func1(data) == 1) {
        return;
    }
    ....
    if (Func3(data) == 3) {
        return;
    }
}

int main() {
    int *data = (int*)malloc(100 * sizeof(int));
    SomeProcess(data);
    free(data);
}
Ли Де Форест, изобретатель и отец радио, 1957 год


7 мая?
нет ничего невозможного.
Буфер в РАМе, а обработчик в irq.
проверил, вроде все норм «The directory name invalid».
Windows Server 2016 на VMware Workstation 15 Pro
а как же, первичная функция календаря, показать день недели? Тоже иногда полезно
не уверен насчет шарпа. Но в Си switch на большом кол-ве условий будет быстрей. Так как это по сути превращается в таблицу безусловных переходов
Видимо мое понимание аналогий совпадает в какой-то мере с авторским.

Так вот порт — это конец дорожки. Понятненько?

Я считаю что автор так и написал, шина с разьемом по середине, те по вашей аналогии, по середине дороги выкопали море и поставили два порта (то бишь разъем)
Порт это по сути шина с разъёмом по середине. Протокол — это порядок взаимодействия через контакты.


а что не так с этим выражением? Если спуститься на землю прочитать в контексте, то выражение становится логичным, Это как шина, но посередине, те между концами шины, добавили разъем.
Да и протокол охарактеризован правильно, вроде бы автор не тянется к академическому повествованию

Information

Rating
5,435-th
Registered
Activity