1

Вопрос о bool. В последних версиях они есть?

2

gavrasio, булев тип? Почему его не должно быть?

Обычный юзер
Mageia 8 x86_64 Plasma

3

На основании этого http://www.cplusplus.com/reference/cstdbool/ можно с уверенностью ответить что входит в стандарт С++11 и С++09 . Никакой инфы о том что в С++14 отказались от использования bool типа тож не нашел. Более того:
Снова таки со странички  http://www.cplusplus.com/reference/cstdbool/
wchar_t, char16_t, char32_t and bool are fundamental types in C++ and therefore are not defined in the corresponding header where they appear in C. The same applies to several macros in the header <iso646.h>, which are keywords in C++

Спасибо сказали: gavrasio1

4 (2015-10-14 00:14:17 отредактировано gavrasio)

dima2387⇓ пишет:

На основании этого http://www.cplusplus.com/reference/cstdbool/ можно с уверенностью ответить что входит в стандарт С++11 и С++09 . Никакой инфы о том что в С++14 отказались от использования bool типа тож не нашел. Более того

Спасибо за информацию. На других форумах говорят, что нет.
А насчёт такого движения:
while(1);
Мне доказывают, что это выражение есть законченый оператор. И ";" есть обозначение конца оператора. Я же говорю, что ";" в данном случае, это есть есть пустой оператор, который в развёрнутом виде можно записать так:
while(1)
{ ; }
И здесь не надо никакого обозначения конца оператора.
Если не поставить пустой оператор, то while начнёт обрабатывать следующую строку по законам синтаксиса С++.

5

Вот код:

Spoiler

//Вольтметр на АЦП, вход на PC1, библиотека для ЖКИ из Интернета.
#include<avr/io.h>
#include<util/delay.h>
#include <avr/interrupt.h>
#include "lcd_lib.h"
#include <avr/pgmspace.h>
  long int a=0;

int main ( void )
{
PORTB = DDRD = 0xFF;  PORTC = 0b00000010;
DDRC =  0b11111101;
   ADMUX = 0b01000001;  //|REFS1|REFS0|ADLAR| -- |MUX3|MUX2|MUX1|MUX0|
                                       //опорное Vref=напр. питания, вход PC1
    ADCSR= 0b11001011;  //|ADEN|ADSC|ADFR|ADIF|ADIE|ADPS2|ADPS1|ADPS0|
                                         //однократное преобразование ADFR=0
          lcd_init();
    lcd_clr();  // без очистки дисплея сбоит
  lcd_gotoxy(1,0);
  lcd_string("==VOLTMETER==",13);
  lcd_gotoxy(10,1);
lcd_string("Volt",4);
  while(1)
{         ADCSRA |= 0x40; //запускаем однократное преобразование ADSC=1
_delay_ms(2);  //пауза обязательно, без неё сбоит
    a=ADCW;
    a = (a*5000/1024);  //Vref=5000(напряжение питания)
    lcd_gotoxy(4,1);
       lcd_dat (a/1000 + 0x30);
    if (a==0)
    break;
    lcd_dat ( ',' );
    lcd_dat ((a/100)%10 + 0x30);
    lcd_dat ((a/10)%10 + 0x30);
    lcd_dat (a%10 + 0x30);
                         _delay_ms(1);
}
}

Почему при а==0 делает выход из main? Ретёна нет.

6

потому что в С++ возможно не указывать return. Посмотри вывод компилятора, там наверняка есть предупреждение. И операторы выполняются или до return или пока они не закончатся в теле функции.

Это не должно быть слишком сложно... (с)

7 (2016-02-01 22:30:39 отредактировано gavrasio)

okdal⇓ пишет:

потому что в С++ возможно не указывать return. Посмотри вывод компилятора, там наверняка есть предупреждение. И операторы выполняются или до return или пока они не закончатся в теле функции.

Компиляция в WinAVR:


И всё работает! А в консоли - ужас!

extract@93 avr30]$ avr-gcc avr30.c
In file included from avr30.c:2:0:
/usr/avr/include/avr/io.h:428:6: warning: #warning "device type not defined" [-Wcpp]
 #    warning "device type not defined"
      ^
In file included from avr30.c:3:0:
/usr/avr/include/util/delay.h:89:3: warning: #warning "F_CPU not defined for <util/delay.h>" [-Wcpp]
 # warning "F_CPU not defined for <util/delay.h>"
   ^
/usr/avr/include/util/delay.h:94:3: warning: #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed" [-Wcpp]
 # warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"
   ^
avr30.c: In function 'main':
avr30.c:11:1: error: 'PORTB' undeclared (first use in this function)
 PORTB = DDRD = 0xFF;  PORTC = 0b00000010;
 ^
avr30.c:11:1: note: each undeclared identifier is reported only once for each function it appears in
avr30.c:11:9: error: 'DDRD' undeclared (first use in this function)
 PORTB = DDRD = 0xFF;  PORTC = 0b00000010;
         ^
avr30.c:11:23: error: 'PORTC' undeclared (first use in this function)
 PORTB = DDRD = 0xFF;  PORTC = 0b00000010;
                       ^
avr30.c:12:2: error: 'DDRC' undeclared (first use in this function)
  DDRC =  0b11111101;
  ^
avr30.c:13:4: error: 'ADMUX' undeclared (first use in this function)
    ADMUX = 0b01000001;  //|REFS1|REFS0|ADLAR| -- |MUX3|MUX2|MUX1|MUX0|
    ^
avr30.c:15:5: error: 'ADCSR' undeclared (first use in this function)
     ADCSR= 0b11001011;  //|ADEN|ADSC|ADFR|ADIF|ADIE|ADPS2|ADPS1|ADPS0| 
     ^
avr30.c:24:9: error: 'ADCSRA' undeclared (first use in this function)
  {      ADCSRA |= 0x40; //��������� ����������� �������������� ADSC=1
         ^
avr30.c:26:4: error: 'ADCW' undeclared (first use in this function)
  a=ADCW;
    ^
[extract@93 avr30]$ 

Я так понимаю, что и так будет работать, просто очень много замечаний мне даёт.

8

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

Это не должно быть слишком сложно... (с)

9

okdal⇓ пишет:

я бы не был так уверен, что будет нормально работать, хотя это не исключено.

Где-то так работает:
http://savepic.ru/8697611m.png

10

gavrasio⇓ пишет:

И всё работает!

Какой ужас здесь называют "Программирование"!

Этот стон у нас песней зовётся

;-)