All streams
Search
Write a publication
Pull to refresh
214
0
gribozavr @gribozavr

Пользователь

Send message
Да. А как иначе? И отладочная плата с 8-битным микроконтроллером — тоже компьютер.
Флеш под arm (soft-float ABI) есть. Даже 12-й вроде бы.
Менять null pointer constant — очень и очень сложно, так как очень многое в компиляторах завязано на то, что null pointer constant (который определяется как 0 любого целого типа, приведённый к указателю) имеет битовое значение 0 как указатель. Иначе, к сожалению, средствами языка никак. Но можно определить переменную и затем linker script'ом разместить её по нужному адресу.
Да, 10 2 10. Добавил в топик.
Скорее, undefined behavior в любимом компиляторе слишком часто совпадает с желаемым.
4. IEEE 754 настолько распространён, что сложно назвать устройство где какой-то другой floating point.

3. Если yp = zp, то выражение *xp + *yp меняет значение после первой итерации и поэтому его нельзя вынести за цикл.

12. INT_MIN / -1 должно быть равно -INT_MIN, но это больше INT_MAX, поэтому получаем переполнение числа со знаком.
if (!x) не observable. return observable. Поэтому if() не обязан вычисляться. return мы не можем увидеть, потому что для того, чтобы он выполнился, должен был произойти undefined behavior, а дальше может происходить что угодно.
Сделал уточнение.
Она и является расширенным вариантом моего комментария habrahabr.ru/blogs/study/136272/#comment_4532332
Покажите в чём именно нарушение стандарта.
Компилятор может делать всё, что хочет если это не меняет observable behavior. В строке (1) есть два варианта: или x не нулевой указатель и (2) не сработает, или x нулевой указатель и дальше можно хоть запускать форматирование диска.
Спасибо, исправлено.
Отправил ЛС.
Вы — студент и изучаете C++. Вам нужны все тёмные уголки C++. Школьники изучают «программирование», это как курс алгоритмов, но приходится ещё в нагрузку давать какой-то язык чтобы можно было на ЭВМ работать.
> в принципе, сейчас я прекрасно понимаю, в чем проблема.
Но вопрос был в том, насколько ужасны диагностики в компиляторах. Насколько хуже в вашем?

> С другой стороны, может ли школьник разобраться в этой ошибке?
А зачем школьнику перегружать операторы?
Хорошие, понятные, сообщения:
$ cat a.cpp
#include <iostream>

struct A { };

std::ostream operator<<(std::ostream& os, A a)
{
  return os;
}
$ clang++ -c a.cpp
In file included from a.cpp:1:
In file included from /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/iostream:39:
In file included from /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/ostream:39:
In file included from /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/ios:44:
In file included from /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/basic_ios.h:472:
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/basic_ios.tcc:178:25: error: base class 'std::ios_base' has private copy constructor
  extern template class basic_ios<char>;
                        ^
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/ios_base.h:787:5: note: declared private here
    ios_base(const ios_base&);
    ^
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/ostream.tcc:360:25: note: implicit default copy constructor for 'std::basic_ios<char>' first required here
  extern template class basic_ostream<char>;
                        ^
a.cpp:7:10: note: implicit default copy constructor for 'std::basic_ostream<char>' first required here
  return os;
         ^
1 error generated.


Причём «base class 'std::ios_base' has private copy constructor» подсвечено ярким. Покажите ужасное сообщение вашего компилятора.
C или C++? Да вы шутите! В стандарте Си более 190 различных undefined behavior, и я более чем уверен что даже среди разработчиков компиляторов не все их могут на глаз распознать в коде (когда это возможно статически).
В российском варианте практическое ограничение было в том, что программа будет запущена также на десктопной машине. На MTL же памяти 64 Gb, поэтому можно считать что не ограничено.

Information

Rating
Does not participate
Location
Украина
Registered
Activity