WebPack / Метод репликации директивы @apply Tailwind CSS для удаления от @extend в SASS

Ключ такой:

static int *pieces;

Вы сказали, что положили это в свой заголовок. Это не способ экспорта символа. Любой файл, который содержит заголовок, получит свою собственную статическую версию неинициализированного указателя под названием pieces.

Вместо этого вы помещаете это в свой заголовок:

extern int *pieces;

extern int init_pieces();

И в исходный файл, вы делаете это:

static const size_t num_pieces = 128;

int *pieces = 0;

int init_pieces()
{
    pieces = malloc( num_pieces * sizeof(int) );
    return pieces != NULL;
}

Теперь, когда вы включаете заголовок, ваш исходный файл будет знать, чтобы получить pieces откуда-то еще, и будет ожидать, когда компоновщик будет работать там где. Я также предложил функцию init для массива. Однако я не добавил функцию 'release'.

Обратите внимание, что это все C, а не C ++. Если вы используете C ++, вы действительно должны использовать new или еще лучше, используйте vector.

Кроме того, при использовании статики в C ++ помните об этом: Статический порядок инициализации C ++

0
задан Lovelock 25 February 2019 в 15:26
поделиться