как передать volatile + значение по умолчанию?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

alexbmd пишет:

да вы

 И Вы опять цитируете первую фразу, игнорируя остальные? Хотя я уже написал Вам об этом. Зачем?

В общем, простите, Вы мне надоели. Вместо того, чтобы читать и делать, что говорят, Вы постоянно учите меня как Вам правильно помогать. Мне казалось, что помощь и наставления нужны Вам. Мне они не нужны точно, так что разбирайтесь со своими проблемами сами. Самое ценное, что Вам можно посвоветовать, я уже посоветовал - прочитайте книгу по языку. Но Вы это игнорируете. Дело Ваше. Проблемы с языком у Вас, а не у меня.

До свиданья.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Как всё запущено-то!

alexbmd тебе нужен пример вызова функции с переменным, заранее неизвестным, количеством аргументов? Набрать в гугле "С++ функции с переменным количеством параметров" и получить миллион примеров у тебя чего не хватает? Мозгов или времени?

На, держи свои примеры http://zonakoda.ru/funkcii-s-peremennym-chislom-argumentov-v-c99.html Только не спрашивай, для чего тебе печать аргументов (как ты спрашивал для чего тебе нули в регистр пхать).

alexbmd пишет:
в других языках

Можно поинтересоваться, сколько других языков ты знаешь, что это за языки и каков твой уровень владения ими?

Уж не "двадцать ли языков на уровне выше университетского"?

alexbmd
Offline
Зарегистрирован: 15.01.2016

спасибо за ссылку.

 

void soft_reset(volatile uint8_t&& port){
	while(port & 1);
}

soft_reset( ~PIND);	

из прочтения книжек по совету Евгения , возник вопрос в выше приведенном примере

каждый раз когда while будет делать проверку, он каждый раз будет считывать порт, инвертировать его и потом делать проверку ? или закэширует инверсию при первом прочтении и потом будет использовать для сверки ?

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

alexbmd пишет:

void soft_reset(volatile uint8_t&& port){

Евгений не мог такого сказать - я это даже прочитать не могу...

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

alexbmd пишет:

void soft_reset(volatile uint8_t&& port){

из прочтения книжек по совету Евгения , 

Тебе, дурачку, советовали читать книжки для начинающих и целиком, чтоб получить систематические знания! Ты же выдёргиваешь какие-то отдельные куски из руководств для профессионалов, ни хрена в них не понимая. Конструкция "&& port" называется prvalue и 90% процентов профессионально программирующих людей не знают, что это такое. Ты даже не представляешь в какие дебри ты полез.

ua6em
ua6em аватар
Онлайн
Зарегистрирован: 17.08.2016

Ворота пишет:

alexbmd пишет:

void soft_reset(volatile uint8_t&& port){

из прочтения книжек по совету Евгения , 

Тебе, дурачку, советовали читать книжки для начинающих и целиком, чтоб получить систематические знания! Ты же выдёргиваешь какие-то отдельные куски из руководств для профессионалов, ни хрена в них не понимая. Конструкция "&& port" называется prvalue и 90% процентов профессионально программирующих людей не знают, что это такое. Ты даже не представляешь в какие дебри ты полез.

это наверное из конструкции "поди туда не знаю куда и спроси там куда идти далее"? )))

alexbmd
Offline
Зарегистрирован: 15.01.2016

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

для тех кто понимает о чем речь и готов поделиться ответом

void soft_reset(volatile uint8_t&& port){
	while(port & 1);
}

soft_reset( ~PIND);	

в данной конструкции while будет использовать кэшированое значение или пересчитывать состояние порта каждый раз ?

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Ну, ладно, живи как знаешь. До этой конструкции ты ещё не дорос, но ты не хочешь в это верить. Дело хозяйское. Ты хоть можешь внятно сказать, чем отличается & port от && port ?

Я вот не пойму, чем, ну вот скажи, чем тебя не утсроил простой указатель, который тебt старбит написала? Хочешь волатильный - де не проблема, только правильно описать. Но это был просто указатель. Чего тебя в дебри-то несёт?

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

alexbmd пишет:

для тех кто понимает о чем речь и готов поделиться ответом

void soft_reset(volatile uint8_t&& port){
	while(port & 1);
}

soft_reset( ~PIND);	

в данной конструкции while будет использовать кэшированое значение или пересчитывать состояние порта каждый раз ?

Хорошо, я понимаю о чём речь.

В этой конструкции она прочитает порт ОДИН раз перед вызовом функции soft_reset. Сама функция soft_reset порт читать не будет вообще ни разу. Она будет работать с готовым,переданным ей значением.

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

alexbmd
Offline
Зарегистрирован: 15.01.2016

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

 void soft_reset( uint8_t wdt_prescale, volatile uint8_t *port, const uint8_t pin, const uint8_t level){
	wdt_prescale = level ^ (*port & pin);
	printf (wdt_prescale);
}
 
 void soft_reset(){
	volatile uint8_t port = 1;
	const uint8_t pin = 1;
	const uint8_t level = 0;
	soft_reset(level, &port, pin, level);
}

int main()
{ 
soft_reset();
}

вот когда надо int ( 1)присвоить переменной (port) которая будет переданна указателю. (*port) . как это можно сделать ?

чтобы скомпилировалось типо так wdt_prescale = 0 ^ (1 & 1) ;  // т.е. wdt_prescale равно 1

сам разобрался

alexbmd
Offline
Зарегистрирован: 15.01.2016

резюмируя: так нельзя тк на С null==0. 

void soft_reset(const uint8_t wdt_prescale, const volatile uint8_t &port, const uint8_t pin){
	const volatile uint8_t &port_new = (port == NULL) ? 1 :  port;
	const uint8_t pin = (pin == NULL) ? 1 :  pin;
	const uint8_t wdt_prescale = (wdt_prescale == NULL) ? WDTO_15MS :  wdt_prescale;
   wdt_enable(wdt_prescale);
   while(port_new & pin);
   wdt_disable();
}

получается дефолтное значение референсу можно передать только через глобальную переменную или через overloading (c++)

поинтеру можно в объявлении функции задать аргументу дефолтное значение.

DIYMan и остальным спасибо

sadman41
Offline
Зарегистрирован: 19.10.2016

Што-то мне такое помнится, что NULL в числовом выражении не эквивалентен NULL в смысле nullptr.

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Это одно и тоже. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

alexbmd пишет:

резюмируя: так нельзя тк на С null==0. 

Если речь о С, то так нельзя вовсе не по этому, а потому, что в языке С вообще нет ни ссылок, ни значений по умолчанию. Просто нет и всё.

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

да в С и null то, памойму, нет. 

NULL помню, есть.

std::nullptr есть, но не в С

а null вапще нигде не помню. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DetSimen пишет:

да в С и null то, памойму, нет. 

Ну, я исходил из общей аккуратности автора в выражениях и считал, что он имел в виду NULL

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

для автора что "s",  что "*s"  всё на одно лицо, паэтому на его аккуратность я уповать бы не стал.  

strarbit
Offline
Зарегистрирован: 12.06.2016

Dear sir, ЕвгенийП, That’s very kind of you!
Have a good mood for the whole day!
best regards sincerely!

strarbit
Offline
Зарегистрирован: 12.06.2016

Dear sir, sadman41, Thank you very much!
Have a good mood for the whole day!
best regards sincerely!

strarbit
Offline
Зарегистрирован: 12.06.2016

Dear sir, DetSimen, Thank you very much!
Have a good mood for the whole day!
best regards sincerely!

strarbit
Offline
Зарегистрирован: 12.06.2016

Dear sir, Green, Thank you very much!
Have a good mood for the whole day!
best regards sincerely!

strarbit
Offline
Зарегистрирован: 12.06.2016

alexbmd пишет:

strarbit говорите плиз по english  а то я вас не понимаю по русски

Евгений звездочку я не считаю шелухой но в дано конкретном разборе она ни тепло ни мягко. толи я присвое значение порту. толи переменной.  важна суть какое _значение_. и тут у нас две вещи

....

so the fridge is turned off.
https://www.tutorialspoint.com/cplusplus/cpp_pointers.htm
https://www.tutorialspoint.com/cplusplus/cpp_references.htm

strarbit
Offline
Зарегистрирован: 12.06.2016

Dear sir, Ворота, Thank you very much! Have a good mood for the whole day! best regards sincerely!

Green
Offline
Зарегистрирован: 01.10.2015

strarbit пишет:

Dear sir, Green, Thank you very much!
Have a good mood for the whole day!
best regards sincerely!

Спасибо, но мне то за что?!)

strarbit
Offline
Зарегистрирован: 12.06.2016

sir, Green Thanks for helping me.

Green
Offline
Зарегистрирован: 01.10.2015

Хм, Восток дело тонкое...) Tnx, strarbit.