Вопросы по теме 'language-lawyer'

Фортран: целое * 4 против целого (4) против целого (вид = 4)
Я пытаюсь изучить Фортран, и я вижу, как передается много разных определений, и мне интересно, пытаются ли они достичь того же. В чем разница между следующим? integer*4 integer(4) integer(kind=4)
31297 просмотров
schedule 23.11.2022

Требуется ли main() для программы на C?
Ну название говорит само за себя. Является ли функция main() абсолютно необходимой для программы на C? Я спрашиваю об этом, потому что просматривал код ядра Linux и не видел функции main().
9247 просмотров
schedule 05.04.2023

Правомерность использования оператора удаления для указателя, полученного при размещении нового
Я чертовски уверен, что этот код должен быть незаконным, поскольку он явно не будет работать, но, похоже, он разрешен C++0x FCD. class X { /* ... */}; void* raw = malloc(sizeof (X)); X* p = new (raw) X(); // according to the standard, the RHS is a...
1173 просмотров

Какова цель случая s==NULL для mbrtowc?
mbrtowc указан для обработки указателя NULL для аргумента s (многобайтовый символьный указатель) следующим образом: Если s является нулевым указателем, функция mbrtowc() должна быть эквивалентна вызову: mbrtowc(NULL, "", 1, ps)...
608 просмотров
schedule 24.01.2024

Какова семантика механизма интерпретатора Gecko Javascript?
Редактировать Принимая во внимание ответ ниже относительно ссылки на Спецификацию языка ECMAScript - 11.13.2 Составное назначение Учитывая, почему эти, javascript: o=""; o = o + (o+=1) ; alert(o); o=""; o = (o+=1) + o;...
909 просмотров
schedule 02.12.2022

Одномерный доступ к многомерному массиву: это четко определенное поведение?
Я полагаю, мы все согласны с тем, что C считается идиоматичным для доступа к настоящему многомерному массиву путем разыменования указателя (возможно, смещения) на его первый элемент одномерным способом, например: void clearBottomRightElement(int...
6603 просмотров

Безопасно ли удалить nullptr в c ++ 0x?
В c++03 совершенно ясно, что удаление нулевого указателя не имеет никакого эффекта. Действительно, в §5.3.5/2 прямо указано, что: В любом случае, если значением операнда удаления является нулевой указатель, операция не имеет никакого...
64236 просмотров
schedule 18.06.2022

Может ли разница типов между константами 32768 и 0x8000 иметь значение?
Стандарт определяет, что шестнадцатеричные константы, такие как 0x8000 (больше, чем помещается в целое число со знаком), являются беззнаковыми (точно так же, как восьмеричные константы), тогда как десятичные константы, такие как 32768, имеют длинный...
6225 просмотров
schedule 17.08.2022

Неоднозначное выражение доступа к членам: Clang отклоняет допустимый код?
У меня есть код, который для целей этого вопроса сводится к template<typename T> class TemplateClass : public T { public: void method() {} template<typename U> static void static_method(U u) { u.TemplateClass::method(); } };...
1936 просмотров
schedule 29.04.2023

Повторяющиеся typedefs - недействительны в C, но действительны в C++?
Мне нужна стандартная ссылка, почему следующий код вызывает предупреждение о соответствии в C (проверено с помощью gcc -pedantic ; «переопределение typedef»), но отлично подходит для C++ ( g++ -pedantic ): typedef struct Foo Foo; typedef struct...
11158 просмотров
schedule 09.08.2023

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

Как определить, что «предшествует» другим?
Я просмотрел этот отличный ответ относительно отношений Undefined Behavior и Sequenced [Before/After] в C ++11. Я понимаю концепции бинарных отношений, но не понимаю новых правил, регулирующих последовательность. Как применяются новые...
3039 просмотров
schedule 28.06.2022

Нарушает ли доступ к первому полю структуры через приведение C строгое сглаживание?
Нарушает ли этот код строгое сглаживание? struct {int x;} a; *(int*)&a = 3 Говоря более абстрактно, допустимо ли приведение типов между разными типами, если примитивные операции чтения/записи имеют правильный тип?
2027 просмотров

Один и тот же адрес, несколько счетчиков shared_ptr, запрещено ли это стандартом С++?
Предположим, мне нужно сделать следующее (это всего лишь образный код для обсуждения стандарта C++, поэтому я не буду обсуждать, почему я разработал его таким образом, поэтому не беспокойте меня чем-то вроде: ваш дизайн неверен .) T* ptr = new...
330 просмотров
schedule 06.01.2023

Сделать взаимозаменяемые типы классов только с помощью приведения указателя, без необходимости выделения каких-либо новых объектов?
ОБНОВЛЕНИЕ : я ценю предложения "не хочу этого, вместо этого хочу это". Они полезны, особенно когда предоставляются в контексте format-database-m">мотивирующий сценарий . Тем не менее... независимо от того, хорошо это или плохо, мне стало...
1264 просмотров

Разыменование-назначение для дважды увеличенного OutputIterator
В соответствии с (отличным) вопросом требования к пост-инкременту C++ OutputIterator мы наблюдаем, что для разыменовываемое и увеличиваемое значение r из OutputIterator типа X и значение o соответствующего типа, выражение *r++ = o;...
278 просмотров

Строковые литералы подписки в константах времени компиляции
Возможный дубликат: Может ли строковый литерал быть индексирован в константном выражении? Если я подпишу строковый литерал, будет ли результат константой времени компиляции? Другими словами, допустим ли следующий код? constexpr...
348 просмотров
schedule 04.05.2022

Каково время жизни аргумента по умолчанию, временно связанного со ссылочным параметром?
Я думал, что ссылки продлевают время жизни временных объектов только до времени жизни самой ссылки, но вывод следующего фрагмента кажется противоречивым: #include <iostream> struct X{ ~X(){ std::cout << "Goodbye, cruel world!\n"; }...
1041 просмотров

Почему полная специализация функции шаблона не берется из файла .cpp без объявления?
Следующий код не генерирует ошибок/предупреждений компиляции/компоновщика: // A.h #include<iostream> struct A { template<typename T> static void foo (T t) { std::cout << "A::foo(T)\n"; } }; void other (); //...
667 просмотров

Требуется ли сохранять емкость при перемещении std::vector?
Рассмотрим следующий код: std::vector vec; vec.reserve(500); size_t cap = vec.capacity(); std::vector newVec = std::move(vec); assert(cap == newVec.capacity()); Практически в любой реализации, с которой вы столкнетесь, это будет работать....
727 просмотров