搜索
bottom↓
回复: 13

(小技巧)在 AVR Studio 4 里启用 g++ 编译器

[复制链接]

出0入0汤圆

发表于 2006-3-11 08:40:59 | 显示全部楼层 |阅读模式
很简单,在 AVR Studio 安装目录的 ./Compilers 子目录里找到 AvrPluginavrgccplugin.dll,然后用随便哪种 hex 编辑器找到字符串 "CC ="(注意空格),把后面跟的 avr-gcc 改成 avr-g++ 即可。



此后所有程序均可使用完整的 C++ 语法(当然,new 和 delete 依然不能用的),例如 inline 函数(减小栈空间消耗)、缺省参数(在类似eeprom写入函数等地方可用来避免程序跑飞导致eeprom被篡改)、局部变量随用随分配(减小栈空间消耗)、类等。



注意:如果是 WinAVR 200601xx 版,转用 C++ 后,在中断服务程序声明那里会遇到警告,这是 avr/interrupt.h 头文件的一点错误,如下修改:



原内容:

#ifdef __cplusplus

#define ISR(vector)                                        \

extern "C" void vector(void);                                \

void vector (void) __attribute__ ((signal));                \

void vector (void)



修改内容:

#ifdef __cplusplus

/* Bug Fix 20060310

#define ISR(vector)                                        \

extern "C" void vector(void);                                \

void vector (void) __attribute__ ((signal));                \

void vector (void)

*/

/*Bug Fix 20060310*/

#define ISR(vector)                                        \

extern "C" void vector (void) __attribute__ ((signal));                \

void vector (void)

/*Bug Fix 20060310*/



后面还有两段,依此类推,当然,懒得改的话,直接用 ISR 声明中断服务程序也就是了
-----此内容被avr8529于2006-03-11,08:41:25编辑过

出0入0汤圆

发表于 2007-1-10 10:46:39 | 显示全部楼层
#ifdef __cplusplus

#define ISR(vector)               \

extern "C" void vector(void);            \

void vector (void) __attribute__ ((signal));      \

void vector (void)

能说一下这句 的含义吗?  告诉哪有 资料也可  感谢

出0入0汤圆

发表于 2007-1-10 18:56:22 | 显示全部楼层
广东 archeng504 阿成 教过我另一个简单的方法:



AvrStudio也可写C++,要装Winavr(GCC),把AvrStudio生成的Makefile文件中的

cc = avr-gcc改为cc = avr-g++即可,当然工程选项中要改为使用外部Makefile(改过的

Makefile文件)。程序文件的后缀仍然使用.c。

出0入0汤圆

发表于 2008-6-9 21:31:00 | 显示全部楼层
AvrPluginavrgccplugin.dll文件里找不到"CC =呀

出0入0汤圆

发表于 2008-6-9 23:20:26 | 显示全部楼层
先留着了

出0入0汤圆

发表于 2008-6-10 00:45:06 | 显示全部楼层
几百年前的老帖子也有人翻出来……

AVRStudio都进化多少代了,早就不需要改dll了……

技术研讨必须与时俱进啊……

出0入0汤圆

发表于 2008-7-11 10:51:09 | 显示全部楼层
标记一下

出0入0汤圆

发表于 2008-7-11 11:40:04 | 显示全部楼层
根本没必要那么麻烦。

AVRstudio什么动不用改,把程序源文件后缀名改成大写C,就是C++了。
avrgcc自动按C++编译。

出0入0汤圆

发表于 2008-7-13 11:55:57 | 显示全部楼层
试一试

出0入0汤圆

发表于 2008-7-13 18:36:27 | 显示全部楼层
我顺路加问下大家,我用STUDIO建工程为GCC,文件为.C,提示找不到Makefile,和芯片.有没有关于AVR Studio GCC的文档啊,上传一下,让我LOOK下!!!,摸索,没有前途...

出0入0汤圆

发表于 2008-7-13 19:14:33 | 显示全部楼层
to 楼上:

不有袄用中文目录。

出0入0汤圆

发表于 2010-5-5 16:48:55 | 显示全部楼层
请教:原来用gcc编译的程序改用g++编译,出现了如下警告是怎么回事,怎么消除它。
cc1plus.exe: warning: command line option "-std=c99" is valid for C/ObjC but not for C++
不是说C++是C的超集吗,那么原先编好的C语言可以直接当C++语言?

出0入0汤圆

发表于 2010-9-11 22:08:06 | 显示全部楼层
回复【11楼】nini  HYD
请教:原来用gcc编译的程序改用g++编译,出现了如下警告是怎么回事,怎么消除它。
cc1plus.exe: warning: command line option "-std=c99" is valid for c/objc but not for c++
不是说c++是c的超集吗,那么原先编好的c语言可以直接当c++语言?
-----------------------------------------------------------------------

c++ 应该只是c89的超集。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 07:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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