我知道 C 和 C++ 是由不同委员会标准化的不同语言。
我知道像 C 一样,效率从一开始就是 C++ 的主要设计目标。所以,我认为如果任何功能不会产生任何运行时开销并且如果它是有效的,那么它应该被添加到语言中。该C99
标准有一些非常有用和有效的特性,其中之一是复合文字。我在这里阅读编译器文字。
下面是一个展示复合文字使用的程序。
#include <stdio.h>
// Structure to represent a 2D point
struct Point
{
int x, y;
};
// Utility function to print a point
void printPoint(struct Point p)
{
printf("%d, %d", p.x, p.y);
}
int main()
{
// Calling printPoint() without creating any temporary
// Point variable in main()
printPoint((struct Point){2, 3});
/* Without compound literal, above statement would have
been written as
struct Point temp = {2, 3};
printPoint(temp); */
return 0;
}
struct Point
因此,由于使用了复合文字,因此不会创建注释中提到的额外类型对象。那么,它是否有效,因为它避免了复制对象的额外操作的需要?那么,为什么 C++ 仍然不支持这个有用的特性呢?复合文字有什么问题吗?
我知道一些编译器喜欢g++
支持复合文字作为扩展,但它通常会导致不可移植的代码并且该代码不是严格符合标准的。是否有任何建议将此功能添加到 C++ 中?如果 C++ 不支持 C 的任何特性,那么它背后一定有一些原因,我想知道这个原因。