C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了预处理器宏之后,Emacs C模式自动缩进失败大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
适用于 Windows的Emacs 24.2.

case TYPE_LONG: 
 {                           <------- 65383 
   traceCodePath(20);        
   templongVal = iterator_long(it);  
   templongVal = 10; 
   if (isBigendian()) 
   { 
     swap_endian64(&templongValCon,&templongVal); 
     traceCodePath(25);      <------- 65601 
     if (i > 0) 
       {     <------ get weird from here /* ((substatement-open 65601)) */ 
 }           <------ this line aligns with the { below "case"  /* ((block-close 65383)) */ 
 }           <------ the code afterWARD all align with { below "case" /* ((block-close 65383)) */

c模式缩进从一开始就运行良好,直到我添加了一些预处理器宏,#ifdef,#else,#end,之后,从代码中的某些点开始,所有后续缩进都变得混乱.
每一行的合成符号都是正确的,但是锚定位都是错误的,似乎他们无法识别{在同一级别,但是在某些级别{在他们之前处于上层.

更奇怪的是,即使我再次删除那些预处理器宏,缩进也不会再次恢复.
更奇怪的是,有时甚至更晚,它无缘无故地恢复了.我不知道是什么操作触发了这个,但我认为最可能的是“保存”“恢复缓冲区”等.

希望有人能够找出原因,提前谢谢.

解决方法

这很可能与“bug#14133 24.2; c函数识别某些预处理器宏中断”有关:

http://lists.gnu.org/archive/html/bug-gnu-emacs/2013-04/msg00055.html

问题似乎是#之前的空格.我注意到这一点的方式是C-M-a和C-M-e停止正常工作,并且自动缩进区域就像你的情况一样奇怪.

恢复对我来说也不一致.

patch proposed by Alan Mackenzie解决了我的问题,你应该尝试一下.

您也可以尝试使用emacs 23,我无法重现此版本中的错误.

大佬总结

以上是大佬教程为你收集整理的预处理器宏之后,Emacs C模式自动缩进失败全部内容,希望文章能够帮你解决预处理器宏之后,Emacs C模式自动缩进失败所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。