#define and typedef

#define 是文本替换,在编译时编译器自动替换。 typedef 就是type define类型定义,是一种更安全的替换。

基本用法

typedef int; INT; 

#define INT int

2者差异出来了,首先是别名位置上的差异,再是typedef是一个语句,需要;是程序的一部分,而#define是告诉编译器的。

以前我以为这只是小事,换个名字而已所以没好好学过。但事实是,换个名字或许可以节约不少时间和精力。

比如一个函数int multiply(int a,int b){return a*b;}

和#define A*B multiply(A,B) 这类小函数会占用一些资源,如果大量调用,就是浪费。

#define FOR(I,A,B)  for(int I=A;I<B;I++) 如此可以节约下一些人力

而在MFC中宏替换是运用的巧妙非凡。

诶,还没学透就先不写了

volcano_gpio_config.h:47:99: error: expected unqualified-id before '<' token | cc1plus: all warnings being treated as errors 头文件如下: /****************************************************************************** * Copyright (c) 2025 MeiG Smart Co.Ltd. All Rights Reserved. * * This program is the confidential and proprietary information of MeiG * Smart Co.Ltd. ("Confidential Information"). You shall not disclose such * Confidential Information and shall use it only in accordance with the terms * of the license agreement you entered into with MeiG Smart Co.Ltd. * * Filename: volcano_gpio_config.h * * Description: * Meig c-GPIO API. * * Version: 1.0 * Date: 2025-06-03 * Author: zhanghong * * 1.0 2025-06-03 zhanghong First version ******************************************************************************/ #include <cstdint> #include <cstddef> #ifndef __VOLCANO_GPIO_CONFIG_H__ #define __VOLCANO_GPIO_CONFIG_H__ #ifdef __cplusplus extern "C" { #endif #define MODULE_MCU 379 #define MODULE_PM 357 #define VOLCANO_PIN( pin_number, name, type, gpio_number) PINNAME_##name = pin_number, typedef enum { /*Invalid*/ PINNAME_BEGIN = -1, /*VOLCANO_PIN( pin name, name, type, gpio )*/ VOLCANO_PIN( 59, BT_UART_TXD, MODULE_MCU, 54 ) VOLCANO_PIN( 61, BT_UART_RTS, MODULE_MCU, 52 ) VOLCANO_PIN( 62, BT_UART_CTS, MODULE_MCU, 53 ) VOLCANO_PIN( 63, BT_UART_RXD, MODULE_MCU, 55 ) VOLCANO_PIN( 71, UART1_CTS, MODULE_MCU, 117 ) VOLCANO_PIN( 74, UART1_RTS, MODULE_MCU, 116 ) VOLCANO_PIN( 100, GPIO1, MODULE_MCU, 129 ) //volcano_lpm has already been used VOLCANO_PIN( 102, GPIO3, MODULE_MCU, 126 ) VOLCANO_PIN( 104, GPIO4, MODULE_MCU, 128 ) VOLCANO_PIN( 181, RESERVED_1, MODULE_MCU, 50 ) VOLCANO_PIN( 249, GPIO8, MODULE_MCU, 75 ) VOLCANO_PIN( 280, GPIO9, MODULE_MCU, 103 ) VOLCANO_PIN( 283, GPIO10, MODULE_MCU, 78 ) VOLCANO_PIN( 297, UART3_RX, MODULE_MCU, 65 ) VOLCANO_PIN( 298, UART3_TX, MODULE_MCU, 64 ) PINNAME_END } ENUM_PINNAME; enum { RES_OK = 0,//Execute success RES_ERR_EXEC = -1,//Execute error RES_IO_NOT_SUPPORT = -2,//gpio not support RES_IO_ERROR = -3,//gpio err RES_NOT_IMPLEMENTED = -4,//setting invalible RES_BAD_PARAMETER = -6, //Params bad RES_FUN_NOT_SUPPORT = -9 //not support function }; typedef enum { EINT_SENSE_NONE, /* none */ EINT_SENSE_RISING, /** rising */ EINT_SENSE_FALLING, /** falling */ EINT_SENSE_BOTH /** both */ } ENUM_EINT_TYPE; typedef enum { PINDIRECTION_IN = 0, /** GPIO input direction */ PINDIRECTION_OUT = 1 /** GPIO output direction */ } ENUM_PIN_DIRECTION; typedef enum { PINLEVEL_LOW = 0, /** GPIO low level */ PINLEVEL_HIGH = 1 /** GPIO high level */ } ENUM_PIN_LEVEL; typedef enum { PINPULLSEL_DISABLE = 0, /** Disable pull selection */ PINPULLSEL_PULLDOWN = 1, /**pull down */ PINPULLSEL_PULLUP = 3 /**pull up */ } ENUM_PIN_PULLSEL; typedef enum { PINAWAKE_DISABLE = 0, /** GPIO awake disable */ PINAWAKE_ENABLE = 1 /** GPIO awake enable */ } ENUM_PIN_AWAKE; typedef enum { VOLCANO_GPIO_CB_TYPE_EINT1, // GPIO 中断回调1 VOLCANO_GPIO_CB_TYPE_EINT2, // GPIO 中断回调2 VOLCANO_GPIO_CB_TYPE_MAX }VOLCANO_GPIO_CB_TYPE_E; typedef void (* volcano_ms_eint_callback )( ENUM_PINNAME eint_pin_name, int level ); typedef void (* volcano_ms_eint2_callback )( ENUM_PINNAME eint_pin_name, int level ); #define GPIO_LEVEL_HIGH "1" #define GPIO_LEVEL_LOW "0" #define GPIO_DIR_OUT "out" #define GPIO_DIR_IN "in" #define GPIO_EDGE_NONE "none" #define GPIO_EDGE_BOTH "both" #define GPIO_EDGE_RISING "rising" #define GPIO_EDGE_FALLING "falling" #define SYSFS_GPIO_EXPORT "/sys/class/gpio/export" #define SYSFS_GPIO_UNEXPORT "/sys/class/gpio/unexport" #define DEVICE_NAME "/dev/config-gpio" #define SYSFS_STR(x) #x #define SYSFS_GPIO_STR(x) SYSFS_STR(x) #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) #define GPIO_GET_IRQ 0x3025 #define GPIO_REQUEST 0x3026 #define GPIO_SET_DIR_VALUE 0x3027 #define GPIO_GET_VALUE 0x3028 #define GPIO_SET_VALUE 0x3029 #define GPIO_FREE 0x302A #define GPIO_TO_IRQ 0x302B #define GPIO_FREE_IRQ 0x302C #define GPIO_TO_WAKE 0x302D #define GPIO_GET_WAKE 0x302E #define GPIO_GET_DIR_VALUE 0x302F //#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) //#define SYSFS_GPIO_EXPORT "/sys/class/gpio/export" struct some_ioctl_data { unsigned int value; int ret_val; unsigned int use_data; }; typedef struct { int pin; int Gpio_InitNum; volcano_ms_eint_callback callback; unsigned int irq_num; }Gpio_str; typedef struct { Gpio_str Gpio_Init[132]; int ReqNum; }Gpio_Status; typedef struct { int pinname; int pinnumber; bool initflag; } volcano_pin_driver_typeDef; static volcano_pin_driver_typeDef volcano_pin_table_gpio[] = { {59, MODULE_MCU+54,false}, {61, MODULE_MCU+52,false}, {62, MODULE_MCU+53,false}, {63, MODULE_MCU+55,false}, {71, MODULE_MCU+117,false}, {74, MODULE_MCU+116,false}, {100, MODULE_MCU+129,false}, {102, MODULE_MCU+126,false}, {104, MODULE_MCU+128,false}, {181, MODULE_MCU+50,false}, {249, MODULE_MCU+75,false}, {280, MODULE_MCU+103,false}, {283, MODULE_MCU+78,false}, {297, MODULE_MCU+65,false}, {298, MODULE_MCU+64,false}, {507, MODULE_MCU+48,false}, {508, MODULE_MCU+49,false} }; #ifdef __cplusplus } #endif #endif // __VOLCANO_V2X_CONFIG_H__
最新发布
07-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值