找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 701|回复: 2
打印 上一主题 下一主题
收起左侧

C语言函数声明报错error C141: syntax error near '*', expected ')'

[复制链接]
跳转到指定楼层
楼主
ID:1111671 发表于 2024-2-29 19:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#ifndef __W25Q32_H_
#define __W25Q32_H_


#include "main.h"

#define PAGESIZE      256//一页最多输入256字节

//SPI IO控制
#define SPI_SCL_1(_HANDLE_)                ( GPIO_WritePin((_HANDLE_)->uSCL_Port, (_HANDLE_)->uSCL_Pin, 1))
#define SPI_SCL_0(_HANDLE_)                ( GPIO_WritePin((_HANDLE_)->uSCL_Port, (_HANDLE_)->uSCL_Pin, 0))

#define SPI_MOSI_1(_HANDLE_)        ( GPIO_WritePin((_HANDLE_)->uMOSI_Port, (_HANDLE_)->uMOSI_Pin, 1))
#define SPI_MOSI_0(_HANDLE_)        ( GPIO_WritePin((_HANDLE_)->uMOSI_Port, (_HANDLE_)->uMOSI_Pin, 0))

#define SPI_MISO_1(_HANDLE_)        ( GPIO_WritePin((_HANDLE_)->uMISO_Port, (_HANDLE_)->uMISO_Pin, 1))
#define SPI_MISO_0(_HANDLE_)        ( GPIO_WritePin((_HANDLE_)->uMISO_Port, (_HANDLE_)->uMISO_Pin, 0))

#define SPI_CS_1(_HANDLE_)                ( GPIO_WritePin((_HANDLE_)->uCS_Port, (_HANDLE_)->uCS_Pin, 1))
#define SPI_CS_0(_HANDLE_)                ( GPIO_WritePin((_HANDLE_)->uCS_Port, (_HANDLE_)->uCS_Pin, 0))

#define SPI_MISO_R(_HANDLE_)        ( GPIO_ReadPin((_HANDLE_)->uMISO_Port, (_HANDLE_)->uMISO_Pin))


extern void  vW25Q32_Init(SPI_ObjectTypedef * hSPIx,
                                                                         uint8_t             uSCL_Port,
                                                                         uint8_t             uSCL_Pin ,

                   uint8_t             uMOSI_Port,
                   uint8_t             uMOSI_Pin ,

                   uint8_t             uMISO_Port,
                   uint8_t             uMISO_Pin ,

                                                                         uint8_t             uCS_Port,
                   uint8_t             uCS_Pin);

//获取Flash ID
extern uint32_t W25Q32_Read_ID(SPI_ObjectTypedef * hSPIx);
//写使能(启动)
extern void W25Q32_Write_Enable(SPI_ObjectTypedef * hSPIx);
//等待保护(等待擦除或写入操作,直到操作完成结束)
extern void W25Q32_Wait_End(SPI_ObjectTypedef * hSPIx);
//读操作,*buf为内容,addr为地址,pagesize为要读出的字节数
extern void W25Q32_Read_Page(SPI_ObjectTypedef * hSPIx, uint8_t *buf,uint32_t addr,uint8_t pagesize);
//芯片擦除,非易失存储器,写数据前应该擦除操作
extern void W25Q32_Delete(SPI_ObjectTypedef * hSPIx);
//页写操作,*buf为内容,addr为地址,pagesize为写入字节数必须小于256个
extern void W25Q32_Write_Page(SPI_ObjectTypedef * hSPIx,uint8_t *buf, uint32_t addr,uint8_t pagesize);

#endif







Core\W25Q32.h(25): error C141: syntax error near '*', expected ')'
Core\W25Q32.h(39): error C141: syntax error near '*', expected ')'
Core\W25Q32.h(41): error C141: syntax error near '*', expected ')'
Core\W25Q32.h(43): error C141: syntax error near '*', expected ')'
Core\W25Q32.h(45): error C141: syntax error near '*', expected ')'
Core\W25Q32.h(47): error C141: syntax error near '*', expected ')'
Core\W25Q32.h(49): error C141: syntax error near '*', expected ')'

想问一下,为什么每个声明语句都有报错
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:161164 发表于 2024-2-29 20:59 | 只看该作者
要加分行符
  1. extern void  vW25Q32_Init(SPI_ObjectTypedef * hSPIx, \
  2.                                                         uint8_t uSCL_Port, \
  3.                                                         uint8_t uSCL_Pin, \
  4.                                                         uint8_t uMOSI_Port, \
  5.                                                         uint8_t uMOSI_Pin, \
  6.                                                         uint8_t uMISO_Port, \
  7.                                                         uint8_t uMISO_Pin, \
  8.                                                         uint8_t uCS_Port, \
  9.                                                         uint8_t uCS_Pin);
复制代码
回复

使用道具 举报

板凳
ID:883242 发表于 2024-3-1 16:54 | 只看该作者
这种#define不太好,inline更好一些。比如:
#define SPI_SCL_1(_HANDLE_)                ( GPIO_WritePin((_HANDLE_)->uSCL_Port, (_HANDLE_)->uSCL_Pin, 1))
我会写成:
inline void SPI_SCL_1(_HANDLE_) { GPIO_WritePin((_HANDLE_)->uSCL_Port, (_HANDLE_)->uSCL_Pin, 1))}

不过虽然编译器都支持inline,但是这并不是c语言标准关键字,要查编译器手册才可以。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表