constant和#define的区别

本文介绍了C++中宏常量与constant常量之间的关键区别:宏常量仅在预编译阶段进行字符串替换,不进行类型检查且不分配内存;而constant常量在编译时进行类型检查并分配内存。推荐使用constant常量避免潜在问题。

#define 宏常量只是单纯的替换, 在预编译时进行, 没有类型检查。 宏常量不会分配内存空间。

constant常量有类型限制,在编译时会进行类型检查, 定义时会分配内存空间。

c++建议使用constant类型常量, 防止在字符串替换时出现意想不到的问题。

/************************************** Copyright 2009, Chint Power System Ltd. Co. File Name: Invcontroller.c Description: This file gives definition and implementation of Inverter control function Version : V1.0 Author: Zhou xu Date:2011-11-17 **************************************/ /**** head-files including****/ #include "Funheader.h" /**** macro definition****/ #define cFreq60Hz 15360 #define cFreq50Hz 12800 //macro constant for Clarke and Park converter #define cDivide3 5461 //Q14 #define cSqrt3 28378 //Q14 #define cDivideSqrt3 9459 //Q14 #define c3Divide2 24576 //Q14 //macro constant for svm use #define cSqrt3Divide2 14189 //Q14 sqrt(3)/2 *Q14 = 14189 #define cSqrt3Divide3 9459 //Q14 sqrt(3)/3 *Q14 = 9459 //macro constant for PLL use #define cSinTabNumb 720 #define cPLLMaxFreqAdjust 904 //Q4 [9Hz*2*pi*Q4 = 1005] #define cPLLFreqAngleGain 42723 //Q20 1/16/8000/pi*180*32768/360 Q20 #define cPLLAngleGainOpen 16777 //cPLLFreqAngleGain * 2 * pi * 16 / 256 8kHz #define cDCI40mA 320 //Q3 #define cDCI64mA 512 //Q3 #define cDCI150mA 1200 //Q3 #define cVSBusVoltFiltGainNum 158 #define cVSBusVoltFiltGainDen 3938 #define cBusSumDivideGridD 702 //8kHz #define cBusSumVoltFiltGainNum 410//208//105 #define cBusSumVoltFiltGainDen 3686//3888//3991 #define cBusSumVoltVKp 5147//5147//2574 #define cBusSumVoltVKi 12//24//6 #define cBusSumVoltKaw 10//19//10 #define cDCCurrFiltGainNum 410 #define cDCCurrFiltGainDen 3686 #define cDCCurrKp 1086//5147 #define cDCCurrKi 2//12 #define cDCCurrKaw 9//10 #define cBusDiffVoltFiltGainNum 0 //8kHz #define cBusDiffVoltFiltGainDen 0 #define cBusDiffVoltKp 774 #define cBusDiffVoltKi 1 #define cBusDiffVoltKaw 1 #define cInvOsCurrLimitHigh 16383 #define cInvOsCurrLimitLow -16383 #define cGridVoltFiltGainNum 26// 26 #define cGridVoltFiltGainDen 998// 998 #define cGridVoltKp 1112//1112//2224//1112 #define cGridVoltKi 5//5//3 #define cGridVoltKaw 10//10//10 //================================== //inverter control #define cInvCurrFiltGainNum 4090//3826// 3498 //3826//3498//3526//3498 //8kHz #define cInvCurrFiltGainDen 6//270// 598 //270//598//570//598 #define cInvCurrKp 9780*2// 4427 // 9780//4427//4632//4427 #define cInvCurrKi 355*2// 57// 355//57//130//57 #define cInvCurrKaw 149// 53// 149//53//115//53 #define cVSCurrFiltGainNum 3045//3826// 3045 #define cVSCurrFiltGainDen 1051//270//1051 #define cVSCurrKp 4890//9780// 4890 #define cVSCurrKi 89//355// 89 #define cVSCurrKaw 74//149// 74 #define cInertiaInvJ 2712;//3255//6510//15523//3255//31047//1/J/8000 Q20 J = D * T 0.02s #define cVSVoltIngQKi 279//556//279//K = T * w * Kv; 0.01s #define cInvPwmK 1135 #define cInvPwmKRec 7390 #define cInvModuLimitHigh 8191 #define cInvModuLimitLow -8191 #define cInvChkUdComp 16321//16182 //16224//16135////15897 #define cInvChkUqComp 1427//2595 //2302//2889////4085 //macro constant for svm use #define cMaxPwm 8160//8191 // #define cMinPwm 32//15 // update on 20100225 for DPWMMIN //50 //==========================================
最新发布
12-02
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值