linux 开发异常错误记录
error: using typedef-name `T' after `class'
template< typename T> class Factory {friend class T; };class Foo {};int main() {Factory< Foo > f;return 0; }
按照 http://stackoverflow.com/questions/6321191/using-friend-in-templates
提供的解决方案是:
使用间接方式:
template< typename T > class MakeFriend { public:typedef T Type; };template< typename T > class Factory { public:friend class MakeFriend< T >::Type ; };class Foo {};int main() {Factory< Foo > f;return 0; }
error: expected `;' before "m_item"
error: ‘m_item’ was not declared in this scope
template< typename T> class SubTemplate { public:typedef T Type; };template< typename T> class Wrapper {SubTemplate< T >::Type m_item ; };class Foo { };int main() {Wrapper< Foo> a;return 0; }
- 从属属性:在模板中依赖于一个template参数(也就是尖括号中typename后面的T啦)的属性(注意,是属性而不是成员哦)。
- 在使用从属属性的时候,应当在前面加上一个typename关键字,否则就会引发潜在的问题,如下所示。如果在T::someProperty前没有typename关键字,也许编译器会把声明指针用的*认为是用作乘法的乘号。
template <typename T> class C{ public:void f(){typename T::someProperty* x;}; };
修改后将如:
template< typename T> class SubTemplate { public:typedef T Type; };template< typename T> class Wrapper {typename SubTemplate< T >::Type m_item ; // modify this line };class Foo { };int main() {Wrapper< Foo> a;return 0; }
lua 栈溢出问题
程序老是自动访问冲突到某一行, 具体调用过程是 C 调用 lua 在调用 C ,在后面的 C 函数里有如
int CreateMonsters( lua_State* L) {for( int row = 0; ...){for( int col = 0; ...){int mapid = GetMapID( L);...}}}
经常在调用 CreateMonsters() 函数的位置, 例如
{...CreateMonsters();...}
报访问冲突的错误, 即便在CreateMonsters() 内部加上通篇的 try-catch 也无法扑捉到, 函数尾部能够访问到, 就是推出函数时出错;按照以往经验估计是 栈溢出的问题, 才会如此的“粗暴”, 折腾了一番后, 发现时 int GetMapID( lua_State* L) 的问题:
int GetMapID( lua_State* L) {lua_pushnumber( L, m_mapid);return 1; }
row * col 次插入如此多的数据到 栈里, 并且是 多次的 C、lua嵌套调用, 有没有相应合理的 lua_pop( L, n)操作,当然导致某个时刻 从 C 到 lua 异常啦; 当然, 这也是错误使用 该函数, 该函数是给 lua 调用的, 并非给 C。
转载于:https://www.cnblogs.com/Wilson-Loo/archive/2013/04/15/3021326.html
linux 开发异常错误记录相关推荐
- Linux系统日检常见问题,linux系统维护常见错误记录
linux系统维护常见错误记录 发布时间:2008-09-17 21:32:34 作者:佚名 我要评论 一:卸载的时候出现的错误: umount /dev/nb1 device is busy ...
- 小明分享|嵌入式LINUX开发日志-错误汇总①
SSD201 QT移植编译错误解决 book@100ask:~/SSD201/qt-everywhere-src-5.15.0$ ./make.sh mkdir: cannot create dire ...
- 【Linux】centOS 错误记录|无法启动网络Failed to start LSB: Bring up/down networking
目录 Failed to start LSB: Bring up/down networking Failed to mount /sysroot解决方法 Failed to start LSB: B ...
- linux开发常用脚本,记录自己常用的一些 Linux Shell 脚本
常要在 Linux 下分析日志或其他类型的文件,基本用的命令也就 grep, awk, sed, cut, vim, cat, find, xargs, tail, more 或 less.本人工作平 ...
- iOS开发异常错误总结之——wait_fences: failed to receive reply: 10004003
如果在使用UIAlertView的过程中,莫名其妙的出现wait_fences: failed to receive reply: 10004003这个错误,那么十有八九是因为你忘记了关闭键盘. UI ...
- <Linux开发>--驱动开发-- 字符设备驱动(3) 过程详细记录
<Linux开发>–驱动开发-- 字符设备驱动(3) 过程详细记录 驱动开发是建立再系统之上的,前面作者也记录了系统移植的过程记录,如果有兴趣,可进入博主的主页查看相关文章,这里就不添加链 ...
- 基于正点原子Linux开发板(ALIENTEK I.MX6U ALPHA V2.2)的个人自学记录
基于正点原子Linux开发板(ALIENTEK I.MX6U ALPHA V2.2)的个人自学记录 硬件环境 正点原子Linux开发板(ALIENTEK I.MX6U ALPHA V2.2) 底板+核 ...
- <Linux开发>linux开发工具- 之-开发使用linux命令记录
<Linux开发>linux开发工具- 之-开发使用linux命令记录 本文章主要记录开发过程中涉及使用的linux命令. 1.查看磁盘大小分区情况 命令: df -hl` 可查看分区的路 ...
- 嵌入式Linux开发——解决uboot无法使用nfs服务从ubuntu中下载文件(TTT、cannot mount等错误)
前言: 最近在学习正点原子嵌入式Linux开发板uboot的移植实验,移植完之后想测试网络部分的驱动能否工作正常.最后经过测试发现tftp可以正常下载,nfs却一直报错无法下载文件,最后也是折磨了两天 ...
最新文章
- vscode 使用ssh密钥登录远程Linux -- vscode remote linux ssh key
- 学习python的日常6
- android 结束if循环_Android Handler 消息循环机制
- 可降阶的高阶微分方程
- lambda表达式的日期问题
- python笔记之利用scrapy框架爬取糗事百科首页段子
- MFC多线程失败:Create Instance failed
- Java小程序3Arrays(2015-8-27)
- 网页选项卡应用4-12
- 驱动精灵、人生限速曲线救国
- 【C++ 开根号和平方运算】
- FDD下行信道估计的一些知识点
- html背景图片固定代码
- Springboot+Vue实现仿课堂派
- java vad,VAD和CNG的总结
- 人机验证 之 验证码插件
- 软件工程和软件开发过程
- 溯源供应链引擎APS的历史(蔡颖)
- Debug 武侠世界
- 《Springer》宣布免费对外开放的书籍下载
热门文章
- jquery触发点击事件
- java semaphorewa_Java并发(十五):并发工具类——信号量Semaphore
- birt脚本for循环语句_如何使用 for 循环语句嵌套方法!
- Java笔记-AES加解密(PKCS7padding可用)
- Python笔记-CAPM(资本资产定价模型)例子
- Java笔记-通过反射获取枚举类型中所有数据
- Qt笔记-对connect中第5个进行多组实验(对信号与槽进一步认识)
- Spring Boot文档阅读笔记-构建SOAP的web Service服务
- HTTP之content-type相关
- [Err] 1205 - Lock wait timeout exceeded; try restarting transaction Mysql 报错