DEV C++调试功能不能用

qq_39607860 2017-07-24 05:44:56
win10系统
一旦调试就会


工具内的编辑器选项应该开的都是yes
...全文
3832 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
工作量:语法分析>语义分析>词法分析,难度:语义分析>=语法分析>词法分析,代码生成、优化的复杂度变动很大,依据编译器不同,差别很大。
ooolinux 2017-12-29
  • 打赏
  • 举报
回复
引用 33 楼 DelphiGuy 的回复:
39035行,解析器只到语法分析阶段,之后还有语义分析,代码生成、优化。链接器比较简单,而且与语言无关,相当于把零件组装成产品。
这几个阶段最复杂的是哪些阶段?
  • 打赏
  • 举报
回复
39035行,解析器只到语法分析阶段,之后还有语义分析,代码生成、优化。链接器比较简单,而且与语言无关,相当于把零件组装成产品。
ooolinux 2017-12-28
  • 打赏
  • 举报
回复
引用 31 楼 DelphiGuy 的回复:
看来我的知识老化了。在我上学的那个时期,gcc还使用yacc生成解析器,所以肯定是LR解析器没问题,不过刚看了一下gcc 7.2的源码,其解析器gcc7.2.0\gcc\cp\parser.c(一个1.2MB的恐怖C源码)里面明确说了“The parser is of the standard recursive-descent variety”,应该是某种LL解析器,而不是LR。继续搜索了一下,发现gcc从2004年10月开始就使用了新的语法解析器,不再使用yacc自动生成,继续搜索,发现clang也使用的LL解析器,也许现在主要语言都不使用LR解析器了,我感觉学过的编译原理已经过时了...
一个解析器的C源码就要1.2MB,大概多少行?编译器除了解析器,还包括哪些部分呢?链接器应该比较简单吧? 个人觉得原理不会过时,技术有发展、有变体,像老子说的那样,道生一,一生二,二生三,三生万物。。
  • 打赏
  • 举报
回复
看来我的知识老化了。在我上学的那个时期,gcc还使用yacc生成解析器,所以肯定是LR解析器没问题,不过刚看了一下gcc 7.2的源码,其解析器gcc7.2.0\gcc\cp\parser.c(一个1.2MB的恐怖C源码)里面明确说了“The parser is of the standard recursive-descent variety”,应该是某种LL解析器,而不是LR。继续搜索了一下,发现gcc从2004年10月开始就使用了新的语法解析器,不再使用yacc自动生成,继续搜索,发现clang也使用的LL解析器,也许现在主要语言都不使用LR解析器了,我感觉学过的编译原理已经过时了...
  • 打赏
  • 举报
回复
两者都可以,LR解析器应对歧义语法的能力更强一些,比较适合C++这样的语言。编译原理上经常用到的一个工具yacc,就是LR解析器(LR的一个变体LALR(1)),也能解析Pascal类的语法,另一个解析器生成工具antlr,则是使用LL解析器应对一切语言。
ooolinux 2017-12-27
  • 打赏
  • 举报
回复
为什么Delphi用LL解析器,C++用LR呢?
  • 打赏
  • 举报
回复
最大的区别是自顶向下(LL)和自底向上(LR)
ooolinux 2017-12-25
  • 打赏
  • 举报
回复
引用 26 楼 DelphiGuy 的回复:
[quote=引用 24 楼 u010165006 的回复:] C++的语法特性不比Delphi多多少吧,为什么编译速度差这么多?
主要是语言设计的问题,从编译原理的角度,C++无法用LR(k)解析器实现语法扫描,这里k是一个定值,代表语法扫描时需要预看的单词数量,更简单的语言比如C,实际上可以用LR(1)解析器实现,而C++是LR(n),n是不确定的值,理论上可以无穷大。早期的Delphi,大约D1~D7这个时代的语法,是可以用LL(1)解析器实现语法扫描的,LL要比LR快很多,但是后来的语言特性,像匿名函数、泛型之类复杂的语法,我感觉用LL(1)实现不了,不过我水平有限,也不敢肯定。 [/quote] 涉及到编译原理,不太懂~ LL和LR是什么区别?
  • 打赏
  • 举报
回复
引用 24 楼 u010165006 的回复:
C++的语法特性不比Delphi多多少吧,为什么编译速度差这么多?
主要是语言设计的问题,从编译原理的角度,C++无法用LR(k)解析器实现语法扫描,这里k是一个定值,代表语法扫描时需要预看的单词数量,更简单的语言比如C,实际上可以用LR(1)解析器实现,而C++是LR(n),n是不确定的值,理论上可以无穷大。早期的Delphi,大约D1~D7这个时代的语法,是可以用LL(1)解析器实现语法扫描的,LL要比LR快很多,但是后来的语言特性,像匿名函数、泛型之类复杂的语法,我感觉用LL(1)实现不了,不过我水平有限,也不敢肯定。
ooolinux 2017-12-22
  • 打赏
  • 举报
回复
我浏览器问题都引用不了,偶尔又可以。
ooolinux 2017-12-22
  • 打赏
  • 举报
回复
C++的语法特性不比Delphi多多少吧,为什么编译速度差这么多?
  • 打赏
  • 举报
回复
引用 22 楼 u010165006 的回复:
据说Delphi编译也比CB快的多,所以语法扫描应该更快,提示也就快了。
那是啊,Delphi的前首席科学家Allen Bauer到google负责chrome项目都抱怨C++编译太慢,20核40线程的E5 build一次要几小时。
ooolinux 2017-12-22
  • 打赏
  • 举报
回复
据说Delphi编译也比CB快的多,所以语法扫描应该更快,提示也就快了。
  • 打赏
  • 举报
回复
装个固态肯定有用啊,另外内存要大。
draculamx 2017-12-21
  • 打赏
  • 举报
回复
引用 19 楼 DelphiGuy 的回复:
因为CB项目里可以直接使用Delphi单元,所以必须也能提示Delphi语法的东西,就使用一样的技术了。静态实现是基于知识库+源代码扫描,实质就是文本搜索,动态实现除了文本搜索,还有语法扫描,能实时检查出语法错误,所以敲代码的时候有时在IDE下方的消息窗口中会出现Unable to invoke Code Completion due to errors in source code,另外即便没有源码,动态实现也能从.lib、.obj、.dcu得到信息。
难道用CB还要装个固态硬盘。。。。
  • 打赏
  • 举报
回复
因为CB项目里可以直接使用Delphi单元,所以必须也能提示Delphi语法的东西,就使用一样的技术了。静态实现是基于知识库+源代码扫描,实质就是文本搜索,动态实现除了文本搜索,还有语法扫描,能实时检查出语法错误,所以敲代码的时候有时在IDE下方的消息窗口中会出现Unable to invoke Code Completion due to errors in source code,另外即便没有源码,动态实现也能从.lib、.obj、.dcu得到信息。
draculamx 2017-12-19
  • 打赏
  • 举报
回复
引用 17 楼 DelphiGuy 的回复:
[quote=引用 15 楼 draculamx 的回复:] 为什么VS代码提示那么快,都是C++啊。。。但是用VS做界面简直是折磨,真的折磨。。。
因为vs的提示是静态的,而CB、Delphi的提示是动态的,有实时语法检查。 [/quote] 1.为什么BCB不做成静态的 2.同样是动态的话,为什么DELPHI的语法提示要快很多,几乎和VS一个速度,而BCB却很慢
  • 打赏
  • 举报
回复
引用 15 楼 draculamx 的回复:
为什么VS代码提示那么快,都是C++啊。。。但是用VS做界面简直是折磨,真的折磨。。。
因为vs的提示是静态的,而CB、Delphi的提示是动态的,有实时语法检查。
ooolinux 2017-12-17
  • 打赏
  • 举报
回复
抓主要矛盾。。其它就认了。
加载更多回复(15)

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧