百科问答小站 logo
百科问答小站 font logo



VScode为什么把*.C当成C而不是C++?怎么改? 第1页

  

user avatar   pansz 网友的相关建议: 
      

这确实是个 bug,不过,毕竟微软设计的。人家微软自家的操作系统不区分文件大小写。所以在微软看来大写跟小写是一样的。

虽然 C++ 语言的标准定义了大写 C 跟小写 c++都是 C++ 的标准后缀,但这两个恰好微软的系统都不支持,微软似乎只支持 CPP,不确定其他的后缀微软是否支持。

科普一下: .C .c++ .cc .cpp .cxx 其实都是标准的C++后缀。在 C++ 作者的书中有描述,在 Unix 相关标准,以及 gcc,c++标准等多处有描述,评论区有指出,可自行查找。

Unix 血统的那些编译器大多都支持所有种类的后缀识别为 C++ 语言。但微软的编译器往往并不全部支持。

以上这些后缀在典型的 C++ 编译器实现中,其实只有 .cpp 跟 .C 是支持大写的。而这里的原因自然就是因为微软的系统保存文件可能会保存为大写。或者说相对难以控制文件的大小写。因此对于纯粹以 .C 的大小写区分 C++ 的这个特性,对微软的系统来说并没有办法很好的支持。


就题主的问题来说,vscode似乎是开源的,我猜你应该可以把这个bug直接改了,然后提个pull request。

但请注意,如果在 Windows 平台内,一部分 Windows 用户会依赖「即便大写C也认为是 C 语言」的这个bug,你修改了这个bug可能会反而不符合这部分用户的需求,因为这个bug对他们来说已经成为了 feature。

大概这就是这个 bug 没被修改掉的理由吧,因为 Windows 平台下需要兼容这个「大小写不分」的bug,并且已经成为了 feature,因此改掉这个 bug 反而会让一部分用户困惑。

所以,大 C 结尾表示 C++ 通常是 Unix 系统使用,从兼容性考虑,题主可以将这些文件统一改名,从而更好的兼容 Windows 平台。如果无法做到,也可以考虑修改 vscode 的 C++ 插件,或者切换为使用其它具备 Unix/GNU 血统的编辑器,他们或许会更好的处理大 C 结尾的文件。




  

相关话题

  C/C++编程有哪些没什么用,但让人不明觉厉又不至于太奇怪的写法? 
  假如有某种力量使得世界上所有编译器都被删除了, 人类是否需要从打孔卡开始写第一个编译器? 
  求十亿内所有质数的和,怎么做最快? 
  C语言中整型输出(%d)有什么用? 
  如果加班是自愿的,你们会为了钱加班吗? 
  用C语言,能在100行之内实现贪吃蛇吗? 
  指向指向指向指针的指针的指针的指针有什么用? 
  C++整型有__int8、__int16、__int32等等,为什么还要short、int、long? 
  C++ 有提供像是 C 中 realloc() 这样的函数的新版本吗? 
  代码之间为什么要加空格? 

前一个讨论
如何看待某司 HR 以节约开支为由询问女下属出差时是否可和男领导住一个房间,女性在职场中如何保护自己?
下一个讨论
如果你的超能力是看一眼就知道对方是男是女,怎样才能最大程度的发挥这个能力?





© 2025-01-31 - tinynew.org. All Rights Reserved.
© 2025-01-31 - tinynew.org. 保留所有权利