相关疑难解决方法(0)

灵活的数组成员在C++中是否有效?

在C99中,您可以声明结构的灵活数组成员:

struct blah
{
    int foo[];
};
Run Code Online (Sandbox Code Playgroud)

但是,当有人在这里工作时尝试使用C++中的clang编译一些代码时,该语法不起作用.(它一直在与MSVC合作.)我们不得不将其转换为:

struct blah
{
    int foo[0];
};
Run Code Online (Sandbox Code Playgroud)

通过C++标准,我发现根本没有提到灵活的成员数组; 我一直认为这[0]是一个无效的声明,但显然对于一个灵活的成员数组它是有效的.灵活的成员数组在C++中实际上是否有效?如果是这样,是正确的声明[]还是[0]

c++ flexible-array-member

36
推荐指数
3
解决办法
2万
查看次数

C++中int*和int []之间的区别

上下文:C++考虑下面的示例

class TestClass
{
private:
    int A[];
    int *B;

public:
    TestClass();
};

TestClass::TestClass()
{
    A = 0; // Fails due to error: incompatible types in assignment of `int' to `int[0u]'
    B = 0; // Passes
}
Run Code Online (Sandbox Code Playgroud)

A = 0失败但B = 0成功.有什么收获?A究竟是什么?常量指针?我如何初始化呢?

c++

6
推荐指数
2
解决办法
3万
查看次数

标签 统计

c++ ×2

flexible-array-member ×1