打印

编写的结构体的头文件出现的问题

[复制链接]
4056|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
无语凝咽|  楼主 | 2010-7-23 22:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在头文件中编写了结构体,在编译时老是出现问题,以下是我用的头文件:
#ifndef __CLARKE_H__
#define __CLARKE_H__

typedef struct {  
                  void  (*calc)(void *);        // Pointer to calculation function
                 long  As;                  // Input: phase-a stator variable
                 long  Bs;                // Input: phase-b stator variable
                 long  Cs;                // Input: phase-b stator variable
                 long  Alpha_clarke;                // Output: stationary d-axis stator variable
                 long  Beta_clarke;                // Output: stationary q-axis stator variable
                 } CLARKE;                    

/*-----------------------------------------------------------------------------
Default initalizer for the CLARKE object.
-----------------------------------------------------------------------------*/                     
#define CLARKE_DEFAULTS {    \
                                        (void (*)(void *))clarke_calc, \
                                 0, \
                                 0, \
                                                         0  \
                                                        0, \
                                                        0, \
                         }

typedef CLARKE *CLARKE_Handle;
void clarke_calc(CLARKE_Handle);

#endif // __CLARKE_H__

在中断函数里编写:
#include "clarke.h"
        CLARKE clarke = CLARKE_DEFAULTS;

但是为什么老是出现下面的错误,这是什么原因呢?
[interrupt.c]
"interrupt.c", line 12: [F001] syntax error at or near symbol ';'

相关帖子

沙发
6019实验室| | 2010-7-23 22:31 | 只看该作者
错误定位在哪里的呢

使用特权

评论回复
板凳
6019实验室| | 2010-7-23 22:31 | 只看该作者
一般我的习惯是在C文件中定义函数,然后在头文件中用extern声明,然后在需要调用这个函数和变量的头文件中利用include来包含那个头文件。不过你这样做我刚才看了看TI的例子,好像是没有问题的。

使用特权

评论回复
地板
年轻不在| | 2010-7-23 22:32 | 只看该作者
是呀,TI的例子也是这样,但出现这样的错误,一直都没有找到原因

使用特权

评论回复
5
年轻不在| | 2010-7-23 22:33 | 只看该作者
[interrupt.c]
"interrupt.c", line 12: [F001] syntax error at or near symbol ';'
这句的错误是指:
            CLARKE clarke = CLARKE_DEFAULTS;
这应该是没错误的

使用特权

评论回复
6
6019赵文| | 2010-7-23 22:35 | 只看该作者
是不是行注释出了问题

使用特权

评论回复
7
6019赵文| | 2010-7-23 22:35 | 只看该作者
我也在相同程序里用了这样的结构体,却是对的,很不明白其中缘由

使用特权

评论回复
8
linqing171| | 2010-7-23 23:19 | 只看该作者
#define CLARKE_DEFAULTS {    \
                                        (void (*)(void *))clarke_calc, \
                                 0, \
                                 0, \
                                                         0  \
                                                        0, \
                                                        0, \
                         }


你的编译器,这句直接用,不通过宏能过么?

使用特权

评论回复
9
linqing171| | 2010-7-23 23:22 | 只看该作者
CLARKE clarke = {(void (*)(void *))clarke_calc,0,0,0,0,0};
表面来看,没有任何错误,不知道楼主哪个编译器,直接把能出错的例子发一个上来.

使用特权

评论回复
10
batsong| | 2010-7-24 09:27 | 只看该作者
#define CLARKE_DEFAULTS {    \
                                        (void (*)(void *))clarke_calc, \
                                 0, \
                                 0, \
                                                         0  \
                                                        0, \
                                                        0, \
                         }

有个0后面没逗号:L,害我一直检查那个函数指针

使用特权

评论回复
11
cosmicy| | 2010-7-24 15:31 | 只看该作者
还没有解决吗,有没有错误提示传上来看看,大家探讨一下。

使用特权

评论回复
12
linbei1988| | 2010-7-24 21:56 | 只看该作者
。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

88

主题

399

帖子

1

粉丝