Он должен работать нотационно, хотя, поскольку вы определили структуру как const
, ее можно инициализировать и не назначать после инициализации.
Однако, это отличная ошибка от той, которую вы получаете. Он ведет себя немного, как если бы data
не простое слово - как будто это макрос расширился в нечто странное или что-то в этом роде. Тип структуры объявляется в заголовке, не так ли? И после запятой у нее есть точка с запятой, не так ли?
Да, const
не проблема. Я попытался удалить его, только чтобы получить ту же ошибку. Любая идея, как решить эту последнюю часть, о которой вы говорите?
На одном уровне, там не хватает кода - вы не предоставили MCVE (Minimal, Complete, and Verifiable Example) - у нас нет никакого кода, который мы можем скомпилировать и увидеть ошибки, вы видите (или нечто подобное). Нам нужен ваш заголовок и минимальный набор кода, который показывает проблему.
Вы пишете data.compute = …
внутри функции, не так ли? (Хммм: Я подозреваю, что не - вы должны либо использовать инициализацию … data = { … };
или переместить присваивание внутри функции.)
Нет, это не в функции. Не могли бы вы подробнее рассказать о … data = { … };
? Я не понимаю этот синтаксис; что представляет первый …
?
Первый …
является static const struct my_struct
, но я чувствовал себя слишком ленив, чтобы copy'n'paste. Итак, вам нужно:
static const struct my_struct data = { .compute = sin };
или что-то подобное (если вы включаете <math.h>
предоставить декларацию для sin
- или использовать некоторые другие функции, которые вы уже объявлены или определены). Если вы застряли без C99 или более поздней версии компилятора):
static const struct my_struct data = { sin };
Вы не можете писать задания вне функций - это ваша проблема. Вы должны использовать инициализатор или написать назначение внутри функции и удалить const
.
Он должен работать нотационно, но поскольку вы определили структуру как 'const', вы можете ее инициализировать и не назначать ей после инициализации. Однако, это другая ошибка от той, которую вы получаете.Он ведет себя так, как будто 'data' - это не простое слово - как будто это макрос расширяется в нечто странное или что-то в этом роде. Тип структуры объявляется в заголовке, не так ли? И у него есть точка с запятой после '}', не так ли? –
Да, const не проблема. Я попытался удалить его, только чтобы получить ту же ошибку. Любая идея, как решить эту последнюю часть, о которой вы говорите? – Bob
Недостаточно кода - вы не предоставили MCVE ([MCVE]) - у нас нет кода, который мы можем скомпилировать и увидеть ошибку, которую вы видите (или что-то подобное). Нам нужен ваш заголовок и минимальный набор кода, который показывает проблему. Вы пишете 'data.compute = ...' внутри функции, не так ли? (_Hmmm: Я не подозреваю, что вы не должны использовать инициализацию '... data = {...};' или переместить назначение внутри функции.) –