определение статических структур константы

Блок содержит заголовок и некоторые данные (обычно транзакции). Единственная часть, которая используется для вычисления хеша, это заголовок блока.

Заголовок блока содержит следующее:

Заголовок блока

{версия 4B} {хеш предыдущего блока 32B} {корень хеша merkle 32B} {время 4B} {биты 4B} {одноразовый номер 4B}

version (4 Bytes) - Block format version.
previous block hash (32 Bytes) - The hash of the preceding block. This is important to include in the header because the hash of the block is calculated from the header, and thus depends on the value of the previous block, linking each new block to the last. This is the link in the chain of the blockchain.
merkle root hash (32 Bytes) - The hash of the merkle tree root of all transactions in the block. If any transaction is changed, removed, or reordered, it will change the merkle root hash. This is what locks all of the transactions in the block.
time (4 Bytes) - Timestamp in Unix Time (seconds). Since the clocks of each node around the world is not guaranteed to be synchronized, this is just required to be within of the rest of the network.
bits (4 Bytes) - Target hash value in Compact Format. The block hash must be equal to or less than this value in order to be considered valid.
nonce (4 Bytes) - Can be any 4 Byte value, and is continuously changed while mining until a valid block hash is found.
11
задан dudico 29 March 2009 в 14:32
поделиться

4 ответа

static const struct Foos foo = { 1, 2 };

Компиляции и с g ++ и с gcc.

Вы могли, конечно, как onebyone указывает, определите конструктора:

typedef struct Foos {
    int a;
    int b;
    Foos(int a, int b) : a(a), b(b) {}
};

Как который Вы были бы initalize так:

static const struct Foos foo(1, 2);
15
ответ дан 3 December 2019 в 03:05
поделиться

Точечная нотация стиля, я думаю допустимый в ANSI C99. Это не допустимо, ANSI C89. Почти все компиляторы C не реализовали C99.

4
ответ дан 3 December 2019 в 03:05
поделиться

Просто примечание, что перезаписываемые статические данные не поддерживаются в DLL на некоторых версиях Symbian. Это не может влиять на то, что Вы делаете, поскольку Вашими примерами является константа, или можно только поддерживать Symbian v8.1b или позже.

Я думал, что укажу на это, когда я попал в то прерывание однажды.

Кавычка из ссылки выше:

Поддержка глобальных записываемых статических данных по Symbian ОС

Symbian ОС поддерживает глобальные записываемые статические данные в EXEs на всех версиях и гарнитурах.

Версии Symbian ОС на основе ядра EKA2 (8.1b и позже) поддерживают разрешение лексической многозначности в DLLs на целевых аппаратных средствах. Версии 8.1a и ранее, на основе ядра EKA1, не поддерживают глобальное разрешение лексической многозначности в DLLs.

5
ответ дан 3 December 2019 в 03:05
поделиться

Это - легальный C99, но не легальный C89 или C++. По-видимому, Вы компилируете это как C++, поэтому при использовании параметров компилятора для осуществления соответствия стандартов, затем GCCE отклонит его также.

Можно сделать foo = {1, 2}; в C или C++. Очевидно, Вы теряете преимущество имен полей, являющихся тут же: необходимо полагаться на разбирание в порядке.

Другой хороший вариант в C++ состоит в том, чтобы определить конструктора для Вашей структуры и инициализировать с static const Foos foo(1,2);. Это действительно предотвращает структуру, являющуюся POD, однако, таким образом, Вы не можете сделать те же предположения о его представлении в памяти.

5
ответ дан 3 December 2019 в 03:05
поделиться