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

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

приветсвую .  

обозначяю ссылку на порт как volatile. как по науке. а потом хочу её передать через одну-другую функцию. и каждый раз пока  while сравнивает порт, он должен по моей задумке сравнивать реальное текущее значение порта а не статичное , устаревшее, не соответсвующее реальности значение. вот поэтому и pass-by-reference.

&port = 1; единица нужна как дефолтное стартовое значение для подстраховки и в случае если передача порта опущена при вызове soft_reset

но компилятор ругается. помогите исправить ошибку 

 

#include <avr/wdt.h>

volatile uint8_t &portd = PIND;      //interrupts port
const uint8_t pinint0 = 1 << INT0;   //pin INT0

void soft_reset(const uint8_t wdt_prescale, const uint8_t &port = 1, const uint8_t pin = 1){
   wdt_enable(wdt_prescale);
   while(port & pin);
   wdt_disable();
}

void isPIRHigh(const uint8_t &port, const uint8_t pin){
   soft_reset(WDTO_8S, ~port, pin);               //finish when PD0 high
}

void isPIRLow(const uint8_t &port, const uint8_t pin){
   soft_reset(WDTO_8S, port, pin);                  //finish when PD0 low
}

void isPIRAlive(){
   isPIRHigh(portd, pinint0);
   isPIRLow(portd, pinint0);
}

void setup(){isPIRAlive();}

вв

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

если передаю так

uint8_t &port = 1

ругается что нет const, если пишу с const ругается на volatile

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

А Вы точно себе представляете, что делаете в 6, 13 и 17 строках?

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

в голове да. а строгом Си я может орфаграфически/синтактически это неправильно написал.

13. вызываю функцию и передаю ей значение: реальное текущее состояние порта. и номер ноги.  логически проще не куда. синтакситески вроде тоже правильно написал или нет ?

6. принимаю значение (wdt_prescale, реальное текущее значение порта, статичное значение ноги)

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

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

Хорошо - то, что Вы пытаетесь что-то впихнуть в константу, это полбеды, но Вы передаете состояние порта, а принимаете указатель на порт. И что компилятор должен Вам на это ответить?

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

" Вы передаете состояние порта" - я передаю указатель на порт.  пытаюсь во всяком случае.  т.к. мне в while надо проверить реальное текуще (на момент проверки) состояние порта, которе прямо в момент while может и должно измениться, именно это я и проверяю.  если я передам старое-стаичное значение порта оно может не соответсвовать  реальному-текущему. плюс внутри  while оно уже никогда не обновиться 

 

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

получается достаточно указать стр 3 что это ссылка и потом просто передавать как обычную переменную ?  даже если передаем многократно через посредников (промежуточные функции) то смысл "референсности" при этом не теряется разве ?

volatile &port = PORTC
func1 { 
func2 (port)
}

func2 (port2) {  //разве не надо ссылку ? port2 станет обычной-статичной переменной без ссылки ?
func2 (port2)
}

func3 (port3) {
print port3 // у нас по прежнему ссылка на volatile переменную ?
}

 

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

Что-то мне сдаётся, что это чистейший героин:  uint8_t &port = 1

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

as an example

static void PinPORTLow(  volatile uint8_t *port, uint8_t pin ) {
  *port &= ~_BV(  pin  );
}

 

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

alexbmd пишет:

 я передаю указатель на порт

Нет, Вы передаёте состояние. Если хотите передавать указатель, так и передавайте его. Вам уж написали пример.

Только вот нафига Вам это надо?

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

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

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

сори указатель = ссылка.   &port   я передаю имелось ввиду

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

alexbmd пишет:

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

Мне повторить ссылку? Ок: https://stackoverflow.com/questions/1059630/default-value-to-a-parameter-while-passing-by-reference-in-c

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

const надо поправить на volatile.. помимо этого  я понял у меня 2 ошибки

первая дефолтное значение или глобальной переменной что не хотелось бы, или func overload вроде красивее но чем больше аргументов тем более громоздко это становиться

DIYMan а так могу ?

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 = (pin == NULL) ? WDTO_15MS :  wdt_prescale;
   wdt_enable(wdt_prescale);
   while(port_new & pin);
   wdt_disable();
}

 

и остается вторая проблема, говорят я не могу передать ~port передать  как const volatile

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

alexbmd пишет:

указатель = ссылка.  

Это Вам кажется. что "указатель == ссылка", на самом деле это совершенно разные вещи.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Дак ты ж выбрать должен, или const или volatile. Или вапще mutable. 

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

Ну, а чо, const с volatile вполне совместимы

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Да. Вполне может быть. Чоэтоя. 

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

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

я везде говорю про &port  ссылку.  

 

так что с такой реализайцией ? имеет право на жизнт ? вроде как и const и volatile и дефолтное значение в одном флаконе

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();
}

 

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

кстати Евгений ЕМНИП я гдето читал *value == const &value   таки равны по смыслу как раз. но утверждать не буду вам виднее. 

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

alexbmd пишет:

кстати Евгений ЕМНИП я гдето читал *value == const &value   таки равны по смыслу как раз. но утверждать не буду вам виднее. 

Это где это вы прочитали такое ? Значение ячейки и ее адрес равны !? Оно конечно может быть, но "по смыслу" - никада.

 

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

alexbmd пишет:

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

Тогда я вооще не понимаю, Вы вообще читаете, что Вам пишут? Вот, девушка Вам привела работающий пример в посте #8- Вы видели?

А если видели, что там нужен указатель, чего к ссылке прицепились?

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

пост 8 смотрим

к примеру проверяем 6 пин на high
port = 0b10100001
pin = 0b01000000
port = port & ~pin // 0b10100001
port = 0b11100001
port = port & ~pin // 0b10100001

как мне эта информация поможет ? или я не вижу чтото? она не делает тоже самое что моя isPIRHigh

 

господа и дамы так можно присвоить дефолтное значение const volatile аргументу ?

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();
}

 

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

Dear sir, ЕвгенийП, Thank you!
Have a good mood for the whole day!
best regards sincerely!

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

alexbmd пишет:

пост 8 смотрим

Не знаю, где Вы это увидели. В посте №8 пример программы для Вас.

alexbmd пишет:

господа и дамы так можно присвоить дефолтное значение const volatile аргументу ?

Знаете, ответ такой - для Вас - никак. Ну, не доросли Вы ещё до таких конструкций. Вам покажи, Вы потом завалите вопросами, что не так работает.

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

Итак, const означает, что значение никогда не изменяется, а volatile - означает, что оно может измениться в самый неожиданный момент. Вопрос к Вам: как Вы понимаете const volatile - как такое может быть, где применятется, приведите пример. Если я увижу, что Вы понимаете, что это такое, я покажу Вам как с этим работать.

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

Евгений, я не профи это да но вы утрируете на мой счёт уж слижком

а)  пост 8 мы имеем (отбросив чешую)

port &= ~_BV(  pin  );
port = port & ~ pin; //пин у нас 4 стр моего поста №1

что нам даст инверсия пина , т.е. 0&0 ? и даже когда в порту будет high, что нам даст 1&0?  и посмотрите моя isPIRHigh что делаете. ровно противоположное. плюс у девушки указатель. я хочу решить задачку используя ссылку. и я не думаю что это нельзя сделать с помощью ссылок. и я даже сделал это через перезагрузку функции используя ссылки. но опять же для практики/понимания сути/набития шишек хочу разобраться с этим куском кода

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();
}

а точнее с этой строкой, как заменитель присвоения дефолтного значения аргумента функции прямо в объявлении функции. просто в других языках такое работает.  как можно сделать аналог на С++?

	const volatile uint8_t &port_new = (port == NULL) ? 1 :  port;

б) const volatile - я не понимаю. а целенаправленно делаю защиту от случайно записи. и хоть запись я нигде не делаю в коде. но для привычки / набития руки. а вообще при чем тут const volatile. я могу убрать const. всеравно не компилиться конструкция когда я дефолтные значения присваиваю через проверку NULL а вызываю функцию без аргументов soft_reset() . компилятору не нравиться что нет аргументов.

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

alexbmd пишет:

Евгений, я не профи это да но вы утрируете на мой счёт уж слижком

а)  пост 8 мы имеем (отбросив чешую)

port &= ~_BV(  pin  );
port = port & ~ pin; //пин у нас 4 стр моего поста №1

что нам даст инверсия пина , т.е. 0&0 ?

Ну, вот ни грамма не утрирую. Вы 1) не умеете читать и 2) не понимаете кодов.

В посте 8 функция называется PinPORTLow - она сбрасывает в ноль нужные пины порта! Именно для этого там инверсия в сочетании с &

Если Вам надо устанавливать в 1 или просто тупо писать в порт весь байт, то меняется одна строчка (та самая в которой инверсия).

Кроме того, там, в посте №8 вовсе не 

port &= ~_BV(  pin  );

как Вы изволили выразиться, а

*port &= ~_BV(  pin  );

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

alexbmd пишет:

б) const volatile - я не понимаю. ..... а вообще при чем тут const volatile

Так вот и я не понимаю

alexbmd пишет:

при чем тут const volatile

Просто Вы написали

alexbmd пишет:
господа и дамы так можно присвоить дефолтное значение const volatile аргументу ?

Это Вы написали? Или русские хакеры Ваш экаунт взломали?

Вот я и решил проверить, Вы вообще понимаете, о чём спрашиваете? Судя по всему - нет.

Вы попробуйте спросить о чём-то, что Вы понимаете. Может и остальные тогда Ваш вопрос понять смогут.

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

alexbmd пишет:

....

она не делает тоже самое что моя isPIRHigh

она выполняет установка низкий сигнал в указан контакт пин и указан порт с помощью указатель на порт. Вы, не имеете запись в PINx исключение чтение. сказать иначе, volatile переммена сказала - don't touch me without permission, compiler.

 

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

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

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

1) а зачем мне устанавливать пин в 0? теперь то я понял что я пишу одно а вы говорите другое.  я думал вы читаете что я пишу. поэтому то у меня и не получилось натянуть присовение нуля в мой while :) я то искрене верил вы знаете что мне советуете и пытаетесь посоветовать запись нуля вместо while.

а ведь еще в 6 строчка 22 поста я вас спросил зачем мне этот ноль. но вы меня както выборочно читаете.

2) я ничего не присваю а делую проверку! только проверку в while, 8 стр первого поста. 

 

B) Евгений вы получаете наслаждение от тролинга ? я нет.  может поговорим как люди а не как компиляторы. для этого попробуйте понимать меня а не только читать. мне не трудно объяснить вам много раз если потребуется.

еще раз - наличие или отсутвие const применительно к volatile переменной _абсолютно_ не влияет на суть проблемы которую я пытаюсь решить. вам легче понимать код когда там const ? ок я его туда поставлю и давайте дальше разбираться с вопросом. вам легче понимать код без const? ок я его уберу и давайте дальше разбираться с вопросом.

так нормально ? можем перейти к вопросу ? или остались еще какието неясности ?

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

alexbmd пишет:

 можем перейти к вопросу ? или остались еще какието неясности ?

Думаю, не дорос ты до взрослых еще

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

я и не соревнуюсь. 

но в 16 строчке всетаки инверсия не смотря на то что взрослые говорят что нет - http://arduino.ru/forum/programmirovanie/vnutrennie-preryvaniya#comment-444653

повторюсь еще раз, в других языках вот эта вот конструкция , полностью работоспособная

func(arg = 1, var = 10){
print arg,var
}
func() // print 1, 10
func(5, 5) //print 5,5

или эта

func(arg, var){
arg = (arg==NULL) ? 1 : arg;
var = (var==NULL) ? 10 : var;
print arg,var}
func() // print 1, 10
func(5, 5) //print 5,5

в С, первая конструкция не всегда но применима (на что я и напоролся в первом посте)

а вторая вообще у меня не получается, ругается что не аргументов когда делаю вызов soft_reset()

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();
}

возможно в С  реализовать вторую конструкцию? 

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

Есть два варианта развития событий:

1) Вы переходите на другие языки программирования;

2) Принимаете правила игры языка Си.

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

alexbmd пишет:

может поговорим как люди

Вы в чём-нибудь специалист? Попробуйте представить себе человека, который начинает что-то говорить про Вашу область с использованием (не к месту) слов из Вашей области и при этом несёт чистый как слеза срецтво от Ded Simen бред. Ну, вот совсем чистый - рафинированный. И при этом он не понимает, что он несёт бред и уверен, что попытками задавать наводящие вопросы Вы его троллите.

Вот, допустим, что Вы автослесарь, а пришёл к Вам и выдал: «у меня тут карбюратор свечу зажевал и от этого дворники распредвал не центрируют – скрипит что-то, дергается, а радиатор как стоял на блокировке дифференциала, так и стоит пока в магнитоле давление развала на сход не пойдёт». И на любые Ваши попытки как-то привести разговор в норму, следует обиженный ответ: «не тролльте меня, давайте говорить как люди».

Можете мне не верить, но Вы говорите о программировании именно так, как в примере с автослесарем.

Ну, вот скажите. О чём можно «говорить как люди», с человеком, который пишет:

alexbmd пишет:

в дано конкретном разборе она (звёздочка) ни тепло ни мягко. толи я присвое значение порту. толи переменной. важна суть какое _значение_.

Ну, это же поэма! Это в граните отливать надо! Ну, ведь, действительно, какая разница, зарплату получите Вы или её кассиры завернут в бумажку с написанным Вашим именем и заберут себе? Никакой разницы ведь!

alexbmd пишет:

1) а зачем мне устанавливать пин в 0?

Вам дали пример как передать порт в качестве параметра. Понимаете, пример как передать порт в качестве параметра. А уж что с ним делать, читать, записывать туда нули или единицы – это Ваше дело. Человек пишет туда нули. Вы можете делать то, что Вам нужно. Вам показали, как он передаётся. Вам это непонятно?

alexbmd пишет:

поэтому то у меня и не получилось натянуть присовение нуля в мой while :) я то искрене верил вы знаете что мне советуете и пытаетесь посоветовать запись нуля вместо while.

Ну, это опять поэзия, в которой я не понимаю ни одного слова.

alexbmd пишет:

попробуйте понимать меня

Да, уж испробовался весь. Собираюсь сдаться. Слабо мне :(

alexbmd пишет:

еще раз - наличие или отсутвие const применительно к volatile переменной _абсолютно_ не влияет на суть проблемы которую я пытаюсь решить.

А нахрена Вы его туда приплели?

alexbmd пишет:

вам легче понимать код когда там const ? … вам легче понимать код без const?

Мне одинаково трудно. Вернее, даже не трудно, а я просто не понимаю Вашей проблемы.

Возможно, я бы понял, если бы Вы попытались объяснить её, не используя слов, смысла и значения которых Вы не понимаете (const, while, volatile и т.п.). Вы используете эти слова не к месту, и текст становится абсолютно непонятным.

alexbmd пишет:

остались еще какието неясности ?

Не просто остались, а ничуть не уменьшились – одна сплошная непонятка.

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

strarbit пишет:

alexbmd пишет:

....

она не делает тоже самое что моя isPIRHigh

она выполняет установка низкий сигнал в указан контакт пин и указан порт с помощью указатель на порт. Вы, не имеете запись в PINx исключение чтение. сказать иначе, volatile переммена сказала - don't touch me without permission, compiler.

Интересно, а Ваш родной язык какой?

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

Тайский. С красивыми буквами.

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

Хоть что-то понял, слава Богу

alexbmd пишет:

в С, первая конструкция не всегда но применима

Никогда это не применимо в С - там вообще нет параметров по умолчанию. (Вы часом не считаете. что Си и Си++ - это одно и то же?)

alexbmd пишет:

возможно в С  реализовать вторую конструкцию? 

Конечно, а почему нет-то? Если использовать правильный синтаксис. Почитайте какую-нибудь книжку по Си, такие примеры есть практически в любой.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Нууу... Я так больше не буду. ¦(

Нельзя нести мае срецтво в массы. 

Хоть оно и чистое, как мой бред :-)

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

Я тоже подумываю о том, чтобы сдаться. 

Прости, дида - я его просто как эталон чистоты использовал :)

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

пусть будет тайский.

Евгений оно конечно понятно что местами может быть смешно до упада. Но раз я решил помочь от буду проще изъесняться и уж темболее слушать внимательно чтобы понять что я понял то что я понял а не то что показалось. ну ладно это риторика. давайте по вашим пунктам

Цитата:
Ну, ведь, действительно, какая разница, зарплату получите Вы или её кассиры

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

Цитата:
Ну, это опять поэзия

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

Цитата:
А нахрена Вы его туда приплели?

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

Цитата:
Не просто остались, а ничуть не уменьшились

в других языках это валидная конструкция 

func(arg, var){
arg = (arg==NULL) ? 1 : arg;
var = (var==NULL) ? 10 : var;
print arg,var}
func() // print 1, 10
func(5, 5) //print 5,5

возможно нечто подобное организовать на С/с++ ?

куда еще проще?

 

 

 

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

вы говорите второую можно. ну вот я пол дня назад показал

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();
}

а оно не работает

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

По моему за теоретическими рассуждениями потерялась сама суть вопроса, а она в следующем - ТС боится в своей ОГРОМНОЙ программе просмотреть дефолтное обращение к подпрограмме. Мне смешно - не знаю как Вам.

Уважаемый ТС - из букв ОПЖА нельзя составить слово ВЕЧНОСТЬ, ну никак. Поучите как создаются и определяются классы, посмотрите примеры - одной-двумя строками программы тут не отделаешься. Надо учится...

Datak
Offline
Зарегистрирован: 09.10.2014

alexbmd пишет:

ну вот я пол дня назад показал ...

... а оно не работает

Полистал тему, проникся.
alexbmd, простите, но я с вас удивляюсь.

Вы этот кусок кода показали уже раз пять наверно - а он всё не работает, да.

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

Оставьте минимальную, с одним параметром, функцию. Заодно напишите, как вы пытаетесь её вызывать. Напишите какую ошибку выдаёт компилятор. И попытайтесь объяснить, словами, что вас в этой ситуации не устраивает, и чего бы вам хотелось.

В двух строчках разобраться проще, чем в двадцати. В первую очередь вам самому.

И вам сразу помогут, если конечно оно вам надо. Потому что тема, вообще-то, изначально похожа на средней толщины троллинг, если честно. ))

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

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

О! это надо в анналы занести!

Указатель это совсем не то, что переменная. Поэтому разница большая. Вот представь что у почтальона есть бумажка с адресом. Когда присваешь заначение указателю со звездочкой это команда почтальону занести значение по адресу записанному на бумажке . Записывать в указатель без звездочки - это переписывать адрес. Если вместо нормального адреса указать ерунду, то вся почта может зависнуть.

Справедливости ради хочу поддержать алекса в использовании const volatile. Это вполне нормальный случай когда мы хотим читать read only (в нашем процессе) shared memory или регистр.

 

 

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

asam пишет:

Справедливости ради хочу поддержать алекса в использовании const volatile. Это вполне нормальный случай когда мы хотим читать read only (в нашем процессе) shared memory или регистр.

Да, кто ж говорит. что он ненормальный? Я только попросил ТС пояснить как он это понимает, чтобы не метать бисер, ибо было сомнение. И оно (сомнение) полностью подтвердилось, к сожалению - никак не понимает.

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

alexbmd пишет:

вы говорите второую можно. ну вот я пол дня назад показал

а оно не работает

Я говорю???? Вы меня с кем-то спутали. Я говорил следующее

ЕвгенийП пишет:

Конечно, а почему нет-то? Если использовать правильный синтаксис. Почитайте какую-нибудь книжку по Си, такие примеры есть практически в любой.

Т.е. В взяли первую фразу, и плюнули на всё остальное!

1. Я говорил не о том бреде, который Вы написали, а о том, что это можно написать правильно.

2. Я Вам посоветовал прочитать книгу по языку и получить наконец хоть какие-то систематические знания, а не обрывки из форумов и отдельных статей. Вы это сделали? Нет!

Вот если бы Вы Вы это сделали, то Вам было бы можно писать функции с произвольным числом аргументов и проверять их (аргуметнов) наличие на лету. А сейчас Вам нельзя! Ответ на Ваш вопрос "можно это или нельзя" именно таков - Вам нельзя!

Занете в чём Ваша беда, Вы не читаете, что Вам пишут, а если читаете, то не делаете, что говорят (вот, книгу не прочитали). А вместо этого кидаетесь учить людей, как Вам помогать. Бесполезно, я уже говорил Вам. С тем уровнем знаний, который у Вас есть, помочь Вам невозможно. Вы не понимаете, что я Вам говорю, Вы не понимаете что Вам удаётся прочитать где-то ещё (и "ловите на противоречиях", как в #30). Помочь Вам с такими знаниями нельзя. Можно или сделать за Вас (и то трудно, т.к. Вы даже объяснить что Вам нужно толком не можете), или устраивать здесь филиал учебного заведения и перепечатывать Вам тут учебники целиком.

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

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

ЕвгенийП]</p> <p>[quote=asam пишет:

Я только попросил ТС пояснить как он это понимает, ..., к сожалению - никак не понимает.

т.е. мой ответ

Цитата:
const volatile - я целенаправленно использую как защиту от случайно записи.

показал вам что ни как не понимает? ну ну

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

ЕвгенийП пишет:

а оно не работает

----

Я говорю???? Вы меня с кем-то спутали. 

 

да вы

Цитата:

возможно в С  реализовать вторую конструкцию? 
---
Конечно, а почему нет-то?

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

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

я только и делаю что читаю книжку по Си. и как смог написал пример. знаете в чём у меня ошибка в коде - так можете просто показать пример в одну строчку или объяснить почему именно в этом ошибка да на худой конец просто указать где ошибка. а не вместо указания ошибки по ссылке направлять меня использовать поинтеры. и я пойду дальше читать в этом направление книги и исправлять код. но вектор задайте! :) а кидаться лепёхами в мой огород - сомнительный подход к обучению\помощи человеку.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

аптамуш, ты хочешь странного. 

Я перечитал уйму книг по С++, и ни разу нигде мне не понадобилось const volatile (я даж не знаю чо это, и как работает) 

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

DetSimen там без конст ровно таже ошибка, т.е. ошибка не в конст :) и всё оно там (в конст волатиле тобишь) просто и понятно работает :)

в то время как Евгений кидается в меня лепехами, используя ссылки и перезагрузку я частично решил вопрос. но вот по прежнему не понятно как "писать функции с произвольным числом аргументов и проверять их (аргуметнов) наличие на лету" простой пример можно ? А то в книжках не нашел

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

alexbmd пишет:

пусть будет тайский.

alex, ваш как я понимаю, .md?