Вопросы по теме 'language-lawyer'
Возьмите адрес элемента массива с одним концом через нижний индекс: разрешено стандартом C ++ или нет?
Я видел, как несколько раз утверждалось, что следующий код не разрешен стандартом C ++:
int array[5];
int *array_begin = &array[0];
int *array_end = &array[5];
Является ли &array[5] законным код C ++ в этом контексте?
Я хотел...
7777 просмотров
schedule
15.11.2022
Как типы массивов и указателей обрабатываются внутри компиляторов C? ( int *a; против int a[]; )
Мне нужен языковой юрист с авторитетными источниками.
Взгляните на следующую тестовую программу, которая корректно компилируется под gcc:
#include <stdio.h>
void foo(int *a) {
a[98] = 0xFEADFACE;
}
void bar(int b[]) {
*(b+498)...
4532 просмотров
schedule
07.08.2022
трансляция через void * вместо использования reinterpret_cast
Я читаю книгу и обнаружил, что reinterpret_cast не следует использовать напрямую, а лучше использовать преобразование в void * в сочетании с static_cast :
T1 * p1=...
void *pv=p1;
T2 * p2= static_cast<T2*>(pv);
Вместо:
T1 *...
6658 просмотров
schedule
10.03.2024
Каковы действительные подписи для функции C main ()?
Каковы на самом деле действительные подписи для основной функции в C? Я знаю:
int main(int argc, char *argv[])
Есть ли другие действующие?
46877 просмотров
schedule
01.06.2022
Когда вызов функции-члена для нулевого экземпляра приводит к неопределенному поведению?
Рассмотрим следующий код:
#include <iostream>
struct foo
{
// (a):
void bar() { std::cout << "gman was here" << std::endl; }
// (b):
void baz() { x = 5; }
int x;
};
int main()
{
foo* f = 0;...
15541 просмотров
schedule
03.04.2023
Какая формулировка в стандарте C ++ допускает static_cast ‹non-void-type *› (malloc (N)); работать?
Насколько я понимаю формулировку в 5.2.9 Статическое приведение, разрешен результат преобразования void* в указатель на объект только тогда, когда void* изначально был результатом обратного преобразования.
В стандарте есть множество ссылок на...
1522 просмотров
schedule
24.04.2023
Представление отрицательных чисел в C?
Как C представляет отрицательные целые числа?
Это представление в виде дополнения до двух или с помощью MSB (старший бит)?
-1 в шестнадцатеричном формате - это ffffffff .
Так что, пожалуйста, проясните это для меня.
21165 просмотров
schedule
31.05.2022
анонимные пустые немаркированные классы, структуры, объединения и перечисления
! Заявление об ограничении ответственности! Обратите внимание, что я говорю о немаркированных декларациях. Я знаю, что это, возможно, неформальный термин, и я имею в виду то, что объявление не является typedef и не объявляет объект анонимного...
625 просмотров
schedule
02.04.2023
Гарантируется ли, что long будет не менее 32 бит?
Читая Стандарт C ++, я всегда понимал, что размеры интегральных фундаментальных типов в C ++ следующие:
sizeof(char) <= sizeof(short int) <= sizeof(int) <= sizeof(long int)
Я вывел это из 3.9.1 / 2:
Существует четыре...
12904 просмотров
schedule
15.04.2022
Возможна ли нулевая ссылка?
Действителен ли этот фрагмент кода (и определено ли поведение)?
int &nullReference = *(int*)0;
И g ++, и clang ++ компилируют его без предупреждения, даже при использовании -Wall , -Wextra , -std=c++98 , -pedantic , _6 _......
127811 просмотров
schedule
17.03.2023
Отличаются ли эти два синтаксиса инициализатора С++ по семантике?
Предположим, что следующий код является допустимым кодом, который правильно компилируется, что T — это имя типа, а x — это имя переменной.
Синтаксис один:
T a(x);
Синтаксис два:
T a = x;
Различается ли когда-либо точная...
401 просмотров
schedule
19.10.2023
Может ли компилятор С++ предположить, что const bool & value не изменится?
Может ли компилятор С++ предположить, что значение «const bool &» не изменится?
Например, представьте, что у меня есть класс:
class test {
public:
test(const bool &state)
: _test(state) {
}
void doSomething() {
if (_test) {...
2467 просмотров
schedule
08.06.2023
Будет ли std::string всегда заканчиваться нулем в С++ 11?
В сообщении 2008 года на своем сайте Херб Саттер заявляет следующее:
Существует активное предложение еще больше ужесточить это в C++0x и потребовать нулевого завершения и, возможно, запретить реализации копирования при записи по причинам,...
9187 просмотров
schedule
17.07.2022
Почему нет заголовка ‹stlfwd› и можно ли считать его отсутствие дефектом?
Стандартная библиотека включает заголовок <iosfwd> , который (вперед) объявляет все потоки, включая любые typedef , и определяет шаблон char_traits , включая специализации.
К сожалению, нет такого заголовка <stlfwd> , который...
811 просмотров
schedule
10.09.2022
Зачем использовать пространство имен X; не допускается на уровне класса / структуры?
class C {
using namespace std; // error
};
namespace N {
using namespace std; // ok
}
int main () {
using namespace std; // ok
}
Изменить : хотите узнать, что за этим стоит.
61016 просмотров
schedule
21.07.2022
представление ловушки
Что такое «представление ловушки» в C (могут помочь некоторые примеры)? Применимо ли это к C ++?
Учитывая этот код ...
float f=3.5;
int *pi = (int*)&f;
... и если предположить, что sizeof(int) == sizeof(float) , имеют ли f и...
14929 просмотров
schedule
22.06.2022
Могу ли я по умолчанию использовать частный конструктор в теле класса или нет?
GCC 4.5 не позволяет мне сделать это:
class foo {
public:
foo() = default;
private:
foo(foo const&) = default;
foo& operator=(foo const&) = default;
};
Он жалуется, что:
ошибка: 'foo::foo(const foo&)',...
359 просмотров
schedule
17.02.2024
Подразумевает ли вызов pthread_cond_signal или pthread_cond_broadcast барьер записи в память?
Переменные условия обычно используются таким образом, что состояние, на которое они ссылаются, модифицируется мьютексом. Однако, когда состояние представляет собой всего лишь один флаг только для установки, нет необходимости в мьютексе для...
2554 просмотров
schedule
02.01.2024
Точки последовательности и порядок оценки
Я читал K&R и наткнулся на этот пример о неопределенности в поведении при оценке выражения вроде a[i]=i++ ; Спецификация C99 в $ 6.5.2 говорит, что
Между предыдущей и следующей точкой последовательности сохраненное значение объекта должно...
442 просмотров
schedule
27.07.2023
Является ли неопределенным поведением формирование диапазона указателей из адреса стека?
Некоторые программисты на C или C++ с удивлением обнаруживают, что даже сохранение недопустимого указателя это неопределенное поведение . Однако для массивов кучи или стека можно хранить адрес единицы после конца массива, что позволяет сохранять...
793 просмотров
schedule
31.07.2022