Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析C+的句法结构是否更困难+;比其他语言更好? P>我观察到,几乎所有的IDE代码完成java和C++都优于C++。例如,在NETBeBes中,java自动完成远远优于C++自动完成,而在VisualStudio中,C++的自动完成比VisualC++.P/>更好。 有很多IDE提供了非常好的java自动完成,但是C++也是如此,尽管它是较老的语言。 解析C++更困难吗?如果是这样,为什么?< P>解析C++是比较困难的,因为语法是很有状态的。是否知道A*b是指针声明或乘法,取决于当前范围中的标识符a是否引用类型或变量_C++_Ide_Code Completion - Fatal编程技术网

解析C+的句法结构是否更困难+;比其他语言更好? P>我观察到,几乎所有的IDE代码完成java和C++都优于C++。例如,在NETBeBes中,java自动完成远远优于C++自动完成,而在VisualStudio中,C++的自动完成比VisualC++.P/>更好。 有很多IDE提供了非常好的java自动完成,但是C++也是如此,尽管它是较老的语言。 解析C++更困难吗?如果是这样,为什么?< P>解析C++是比较困难的,因为语法是很有状态的。是否知道A*b是指针声明或乘法,取决于当前范围中的标识符a是否引用类型或变量

解析C+的句法结构是否更困难+;比其他语言更好? P>我观察到,几乎所有的IDE代码完成java和C++都优于C++。例如,在NETBeBes中,java自动完成远远优于C++自动完成,而在VisualStudio中,C++的自动完成比VisualC++.P/>更好。 有很多IDE提供了非常好的java自动完成,但是C++也是如此,尽管它是较老的语言。 解析C++更困难吗?如果是这样,为什么?< P>解析C++是比较困难的,因为语法是很有状态的。是否知道A*b是指针声明或乘法,取决于当前范围中的标识符a是否引用类型或变量,c++,ide,code-completion,C++,Ide,Code Completion,但这不仅仅是解析。自动完成需要语义分析、重载解析、模板扩展、选择模板专门化、计算constexpr函数,因为它们可以出现在模板参数列表中 基本上,为了确定任意C++表达式的类型并列出该类型的成员,除了机器代码生成之外,您需要所有非优化编译器。 上述大多数步骤不适用于没有模板专门化的语言。有大量关于这方面的信息(尽管它是以一种可以称为“非常非正式”的风格编写的) 以下是它对所涉及的因素的一些看法: 是aabb(CC)对象定义还是函数声明?事实证明,答案在很大程度上取决于语句前的代码——“上下文”。

但这不仅仅是解析。自动完成需要语义分析、重载解析、模板扩展、选择模板专门化、计算constexpr函数,因为它们可以出现在模板参数列表中

<>基本上,为了确定任意C++表达式的类型并列出该类型的成员,除了机器代码生成之外,您需要所有非优化编译器。 上述大多数步骤不适用于没有模板专门化的语言。

有大量关于这方面的信息(尽管它是以一种可以称为“非常非正式”的风格编写的)

以下是它对所涉及的因素的一些看法:

aabb(CC)对象定义还是函数声明?事实证明,答案在很大程度上取决于语句前的代码——“上下文”。这表明(直觉上)C++语法对上下文非常敏感。

让我们找到CC的定义,然后继续,对吗

无法判断CC是在哪些文件中定义的,或者必须解析哪些文件才能“理解”其定义

这一切都是在我们开始考虑图灵完全模板系统之前,它可以在编译时自动生成新的代码。


java和C语言在C++中优于C++的另一个优点是反射。编译完Java类后,可以将其加载到JVM中(因为Java指定了这些内容,所以您知道它在哪个文件中),并使用标准接口查询它的方法等等。C++没有提供这种能力。

虽然在当前的形式下可能是封闭的,但我认为可以讨论讨论C++的词汇结构的客观答案。C++中的人试图避免自动完成,他们喜欢使用内存而不是求助。@这解释了为什么没有很多IDE提供C++自动完成的原因,因为它是一种主要语言。我真的不明白为什么任何人都不希望VisualStudio/R.*提供的令人敬畏的类型支持(尽管它的重点是C语言)。自动完成只是现代IDE能够/应该提供帮助的一小部分。@sehe没有一个代码库是完美的,即使如此,我也永远不会记得或想记住1000个类的接口,这些接口在其他地方对我没有帮助。STL是的,但是bobs低级字符串接口?其实FQA也是一堆垃圾。@BenVoigt,这个评论可以扩展成一个有建设性的评论吗?好吧,你的特殊引用并没有那么糟糕,尽管“无法判断哪些文件必须被解析”只是有时是正确的(例如,在编辑头文件时)。FQA的主要问题是它的目标是找到C++的问题,而不是解决方案。因此,即使有一个非常简单的解决方法,或者实际上有一个很好的理由来解释这种行为,FQA也只提供了故事中最消极的一面。最后,它不是很有见识。@ Beoviigt“这不是很有见识”我不同意,我发现帮助我指出C++的一些困难方面我甚至没有怀疑是非常有用的。它很有用,因为它有助于更好地理解语言,尽管它的观点(我同意)有很大的偏见。相反,Java和C#环境能够快速建议导入和使用语句,因为自动查找名称的定义很容易做到。Xcode与LLVM的集成据称发生了,所以他们可以使用常规编译器来完成所有这些任务,但是Xcode的C++自动完成仍然是可怕的。@亚当:使用常规编译器并不是所有的有效选择。由于自动完成用于正在编辑的文件,因此它处于可编译状态之间。