我不明白为什么会出现这个错误。也许其他人也看到了。
错误是这样的。
actor_plazma.c:92: error: incompatible types when initializing type ‘int (*)(struct VisObject *)’ using type ‘float’
actor_plazma.c:92: error: incompatible types when initializing type ‘void *’ using type ‘float’
make: *** [actor_plazma.lo] Error 1下面是相关的代码。
#define VISUAL_PARAM_LIST_ENTRY_FLOAT(name, val, lim) { name, VISUAL_PARAM_ENTRY_TYPE_FLOAT, 0, val, lim }
#define VISUAL_PARAM_LIMIT_FLOAT(min, max) { VISUAL_PARAM_ENTRY_LIMIT_TYPE_FLOAT, 0, min, 0, 0, max, 0 }
typedef enum {
VISUAL_PARAM_ENTRY_LIMIT_TYPE_NULL,
VISUAL_PARAM_ENTRY_LIMIT_TYPE_INTEGER,
VISUAL_PARAM_ENTRY_LIMIT_TYPE_FLOAT,
VISUAL_PARAM_ENTRY_LIMIT_TYPE_DOUBLE,
VISUAL_PARAM_ENTRY_LIMIT_TYPE_END
} VisParamEntryLimitType;
static VisParamEntryProxy params[] = {
VISUAL_PARAM_LIST_ENTRY_INTEGER ("bass sensitivity", 0, VISUAL_PARAM_LIMIT_NONE),
VISUAL_PARAM_LIST_ENTRY_INTEGER ("plazma effect", TRUE, VISUAL_PARAM_LIMIT_BOOLEAN),
VISUAL_PARAM_LIST_ENTRY_INTEGER ("3d effect option", FALSE, VISUAL_PARAM_LIMIT_BOOLEAN),
VISUAL_PARAM_LIST_ENTRY_INTEGER ("lines", TRUE, VISUAL_PARAM_LIMIT_BOOLEAN),
VISUAL_PARAM_LIST_ENTRY_INTEGER ("spectrum", TRUE, VISUAL_PARAM_LIMIT_BOOLEAN),
VISUAL_PARAM_LIST_ENTRY_INTEGER ("3d effect", TRUE, VISUAL_PARAM_LIMIT_BOOLEAN),
VISUAL_PARAM_LIST_ENTRY_FLOAT ("rotation speed", 0.4, VISUAL_PARAM_LIMIT_FLOAT(0.0f, 1000.0f)), // line 92
VISUAL_PARAM_LIST_END
};编辑:哦,没有包含所有内容:
typedef enum {
VISUAL_PARAM_ENTRY_TYPE_NULL, /**< No parameter. */
VISUAL_PARAM_ENTRY_TYPE_STRING, /**< String parameter. */
VISUAL_PARAM_ENTRY_TYPE_INTEGER, /**< Integer parameter. */
VISUAL_PARAM_ENTRY_TYPE_FLOAT, /**< Floating point parameter. */
VISUAL_PARAM_ENTRY_TYPE_DOUBLE, /**< Double floating point parameter. */
VISUAL_PARAM_ENTRY_TYPE_COLOR, /**< VisColor parameter. */
VISUAL_PARAM_ENTRY_TYPE_PALETTE, /**< VisPalette parameter. */
VISUAL_PARAM_ENTRY_TYPE_OBJECT, /**< VisObject parameter. */
VISUAL_PARAM_ENTRY_TYPE_END /**< List end, and used as terminator for VisParamEntry lists. */
} VisParamEntryType;
typedef enum {
VISUAL_PARAM_ENTRY_LIMIT_TYPE_NULL,
VISUAL_PARAM_ENTRY_LIMIT_TYPE_INTEGER,
VISUAL_PARAM_ENTRY_LIMIT_TYPE_FLOAT,
VISUAL_PARAM_ENTRY_LIMIT_TYPE_DOUBLE,
VISUAL_PARAM_ENTRY_LIMIT_TYPE_END
} VisParamEntryLimitType;
struct _VisParamEntryLimitProxy {
VisParamEntryLimitType type;
struct {
int integer; /**< Integer data. */
float floating; /**< Floating point data. */
double doubleflt; /**< Double floating point data. */
} min;
struct {
int integer; /**< Integer data. */
float floating; /**< Floating point data. */
double doubleflt; /**< Double floating point data. */
} max;
};
struct _VisParamEntryProxy {
const char *name;
VisParamEntryType type;
char *string;
double value;
VisColor color;
VisParamEntryLimitProxy limit;
};发布于 2010-01-17 13:14:26
类型VisParamEntryProxy没有定义。但是,假设这是一个转录错误,我认为错误是由于宏只提供了5到6个初始化器,而结构需要7个。
或者,如果我弄错了类型链,那么它只需要6个值。对于后者,您将拥有以下内容:
#define VISUAL_PARAM_LIST_ENTRY_FLOAT(name, val, lim) { name, VISUAL_PARAM_ENTRY_TYPE_FLOAT, 0, val, lim }但我认为它应该是这样的
#define VISUAL_PARAM_LIST_ENTRY_FLOAT(name, val, lim) { name, VISUAL_PARAM_ENTRY_TYPE_FLOAT, 0, val, SOMECOLOR, lim}https://stackoverflow.com/questions/2079949
复制相似问题