Что 'пустой указатель определяется макрос'?

В стандарте C ++ не указывается размер интегральных типов в байтах, но он указывает минимальные диапазоны, которые они должны удержать. Вы можете вывести минимальный размер в битах из требуемого диапазона. Вы можете вывести минимальный размер в байтах из этого и значение макроса CHAR_BIT, которое определяет количество бит в байте (во всех, кроме самых неясных платформах, это 8, и оно не может будет меньше 8).

Еще одно ограничение для char заключается в том, что его размер всегда равен 1 байту или CHAR_BIT битам (отсюда и название).

Минимальные диапазоны , требуемый стандартом (стр. 22):

и диапазоны типов данных на MSDN :

  1. signed char : От -127 до 127 (обратите внимание, не от -128 до 127, это предполагает платформы с 1-м дополнением и знаками и знаками)
  2. unsigned char: от 0 до 255
  3. "plain «char: тот же диапазон, что и signed char или unsigned char, , определенные реализацией
  4. signed short: от -32767 до 32767
  5. unsigned short: От 0 до 65535
  6. signed int: от -32767 до 32767
  7. unsigned int: от 0 до 65535
  8. signed long: от -2147483647 до 2147483647
  9. unsigned long: от 0 до 4294967295
  10. signed long long: -9223372036854775807 до 9223372036854775807
  11. unsigned long long: от 0 до 18446744073709551615

AC Реализация ++ (или C) может определять размер типа в байтах sizeof(type) до любого значения, пока

  1. выражение sizeof(type) * CHAR_BIT оценивается как количество бит, достаточно высокое, чтобы содержат требуемые диапазоны, а
  2. упорядочение типа по-прежнему действует (например, sizeof(int) <= sizeof(long)).

Фактические диапазоны, специфичные для реализации, можно найти в заголовке в C или в C ++ (или даже лучше, templated std::numeric_limits в .

Например, вы найдете максимальный диапазон для int:

C:

#include 
const int min_int = INT_MIN;
const int max_int = INT_MAX;

C ++:

#include 
const int min_int = std::numeric_limits::min();
const int max_int = std::numeric_limits::max();

5
задан Brian Tompsett - 汤莱恩 30 January 2016 в 19:32
поделиться

5 ответов

#define IBOutlet

Каждый раз, когда IBOutlet используется в тексте программы, он не будет заменен ничем вообще.

8
ответ дан 18 December 2019 в 06:52
поделиться

Определенный пустым указателем макрос является макросом, который не будет заменен ничем (будет удален) препроцессором. Это - роль, должен дать подсказку о чем-то в коде, таком как:

#define IN
#define OUT
#define INOUT

int myFunction(IN char *name, INOUT char *address, OUT char *phone);

Это объявление предлагает это name входная переменная для функции, address оба ввод и вывод, phone выходная переменная.

7
ответ дан 18 December 2019 в 06:52
поделиться

К вашему сведению, в данном случае, причина IBOutlet даже существует, просто так, чтобы Интерфейсный Разработчик мог проанализировать исходный файл и подобрать биты понимания от него. Это - подсказка (хорошо, немного более сильный, чем подсказка) что переменная, которой предшествуют IBOutlet должен обнаружиться как Торговая точка в Интерфейсном Разработчике при разработке UIs.

8
ответ дан 18 December 2019 в 06:52
поделиться

Также - если Вы не уверены, как что-либо определяется - команда дважды щелкает по нему, и XCode откроет определение в файле первоисточника.

0
ответ дан 18 December 2019 в 06:52
поделиться

О, и в то время как я в нем. Двойной щелчок опции будет (попытаться к), открывают документацию для символа, по которому дважды щелкают.

0
ответ дан 18 December 2019 в 06:52
поделиться