Я соглашаюсь с "Чем-либо, что Вы не можете сказать от подписи метода". Это могло бы также означать объяснять, что возвращает метод/функция.
Вы могли бы также хотеть использовать Сфинкс (и reStructuredText синтаксис) в целях документации в Ваших docstrings. Тем путем можно включать это в документацию легко. Поскольку пример проверяет, например, repoze.bfg, который использует это экстенсивно ( пример документации файла , в качестве примера ).
Другая вещь можно вставить docstrings, также doctests. Это могло бы иметь смысл особенно для модуля или docstrings класса, поскольку можно также показать, что путь, как использовать его и иметь это тестируемое одновременно.
Вам нужен
, который будут реализовывать компиляторы, соответствующие стандарту C («C99»). К сожалению, это не относится к Microsoft. К счастью, проект с открытым исходным кодом предоставляет
для Windows, см. msinttypes .
Это позволит вам использовать int32_t
и uint32_t
, плюс 8, 16, 64 и многие другие.
Примечание: сам заголовочный файл не является обязательным в стандарте, однако большинство типов в заголовке не являются обязательными по отдельности. Некоторые нет. Наиболее часто используемые типы - необязательные, но ничто не мешает вам использовать обязательные. Дело в том, что если реализация вообще предоставляет заголовок, на практике они определяют все типы.
какие компиляторы, соответствующие стандарту C ("C99"), будут реализовывать. К сожалению, это не относится к Microsoft. К счастью, проект с открытым исходным кодом предоставляет
для Windows, см. msinttypes .
Это позволит вам использовать int32_t
и uint32_t
, плюс 8, 16, 64 и многие другие.
Примечание: сам заголовочный файл не является обязательным в стандарте, однако большинство типов в заголовке не являются обязательными по отдельности. Некоторые нет. Наиболее часто используемые типы - необязательные, но ничто не мешает вам использовать обязательные. Дело в том, что если реализация вообще предоставляет заголовок, на практике они определяют все типы.
какие компиляторы, соответствующие стандарту C ("C99"), будут реализовывать. К сожалению, это не относится к Microsoft. К счастью, проект с открытым исходным кодом предоставляет
для Windows, см. msinttypes .
Это позволит вам использовать int32_t
и uint32_t
, плюс 8, 16, 64 и многие другие.
Примечание: сам заголовочный файл не является обязательным в стандарте, однако большинство типов в заголовке не являются обязательными по отдельности. Некоторые нет. Наиболее часто используемые типы - необязательные, но ничто не мешает вам использовать обязательные. Дело в том, что если реализация вообще предоставляет заголовок, на практике они определяют все типы.
это не включает Microsoft. К счастью, проект с открытым исходным кодом предоставляет
для Windows, см. msinttypes .
Это позволит вам использовать int32_t
и uint32_t
, плюс 8, 16, 64 и многие другие.
Примечание: сам заголовочный файл не является обязательным в стандарте, однако большинство типов в заголовке не являются обязательными по отдельности. Некоторые нет. Наиболее часто используемые типы - необязательные, но ничто не мешает вам использовать обязательные. Дело в том, что если реализация вообще предоставляет заголовок, на практике они определяют все типы.
это не включает Microsoft. К счастью, проект с открытым исходным кодом предоставляет
для Windows, см. msinttypes .
Это позволит вам использовать int32_t
и uint32_t
, плюс 8, 16, 64 и многие другие.
Примечание: сам заголовочный файл не является обязательным в стандарте, однако большинство типов в заголовке не являются обязательными по отдельности. Некоторые нет. Наиболее часто используемые типы - необязательные, но ничто не мешает вам использовать обязательные. Дело в том, что если реализация вообще предоставляет заголовок, на практике они определяют все типы.
Это позволит вам использовать int32_t
и uint32_t
, плюс 8, 16, 64 и многие другие.
Примечание: сам заголовочный файл не является обязательным в стандарт, однако, большинство типов в заголовке по отдельности необязательны. Некоторые нет. Наиболее часто используемые типы - необязательные, но ничто не мешает вам использовать обязательные. Дело в том, что если реализация вообще предоставляет заголовок, на практике они определяют все типы.
Это позволит вам использовать int32_t
и uint32_t
, плюс 8, 16, 64 и многие другие.
Примечание: сам заголовочный файл не является обязательным в стандарт, однако, большинство типов в заголовке по отдельности необязательны. Некоторые нет. Наиболее часто используемые типы - необязательные, но ничто не мешает вам использовать обязательные. Дело в том, что если реализация вообще предоставляет заголовок, на практике они определяют все типы.
C99 в stdint.h определяет такие типы, как int8_t
и int16_t
.
Нет, стандарт C определяет минимальные размеры для целочисленных типов, но не дает никаких гарантий относительно максимальных размеров.
Реализация должна предоставлять типы intN_t
, если типы такого размера являются доступный. Я только упомянул, что, поскольку у вас был кроссплатформенный тег - реализация, которая не имеет типа правильной разрядности, не должна предоставлять эти типы.
Обычно вы можете выбрать (с настройкой, определяемой, например, cc -D_INT16_IS_INT
и #ifdef
s) правильный тип для использования для определенного размера бит. Вы можете определить необходимые определения для каждой платформы, которую хотите поддерживать с помощью кода C, используя CHAR_BIT
и sizeof ()
.
Соответствующий раздел проекта c1x (n1362) - :
7.18.1. 1 Целочисленные типы точной ширины
Имя typedef intN_t
обозначает целочисленный тип со знаком шириной N
, без битов заполнения и представление с дополнением до двух. Таким образом, int8_t
обозначает целочисленный тип со знаком шириной ровно 8 бит.
Имя typedef uintN_t
обозначает беззнаковый целочисленный тип шириной N
. Таким образом, uint24_t
обозначает беззнаковый целочисленный тип с шириной ровно 24 бита.
Эти типы являются необязательными. Однако, если реализация предоставляет целочисленные типы с шириной 8, 16, 32 или 64 бита, без битов заполнения и (для подписанных типов), которые имеют представление с дополнением до двух, она должна определить соответствующие имена typedef.
Что касается выбора типов, должно хватить примерно такого:
#ifdef INT32_IS_SHORT
typedef short INT32
#endif
#ifdef INT32_IS_INT
typedef int INT32
#endif
#ifdef INT32_IS_LONG
typedef long INT32
#endif
Я сомневаюсь, что это легко возможно, если не проверить каждую платформу с помощью #ifdef
или около того. Но многие библиотеки уже делают эту задачу за вас. Для MSVC это __ int8
, __ int16
и т. Д. В библиотеке GTK есть похожие определения типов.
Возможно, вы захотите взглянуть на pstdint.h . Это переносимая реализация stdint.h, не требующая поддержки компилятора C99.
Вы всегда можете написать арифметическую библиотеку, которая использует векторы беззнаковых символов для чисел. Таким образом вы можете использовать числа любой длины в битах, и даже позволяют изменять длину в битах.
На самом деле вам не нужно реализовывать такую библиотеку, потому что GNU MP уже обрабатывает это.
Насколько я знаю, ответ отрицательный. Мы кодируем для разных платформ, и мы просто используем typedef для конкретных платформ, используя # if / # else. Например, в Win32: typedef int int32;