标签: declaration

依赖于函数参数的C++数组大小会导致编译错误

我有一个简单的函数,其中一个数组声明大小取决于参数int.

    void f(int n){
        char a[n];
    };

    int main() {
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

这段代码在GNU C++上编译得很好,但在MSVC 2005上却没有.

我收到以下编译错误:

    .\main.cpp(4) : error C2057: expected constant expression
    .\main.cpp(4) : error C2466: cannot allocate an array of constant size 0
    .\main.cpp(4) : error C2133: 'a' : unknown size
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能纠正这个问题?

(我有兴趣使用MSVC,而不使用new/delete)

c++ arrays parameters declaration

18
推荐指数
3
解决办法
1万
查看次数

Perl变量声明中$,@,%之间有什么区别?

例:

my $some_variable;
my @some_variable;
my %some_variable;
Run Code Online (Sandbox Code Playgroud)

我知道,@似乎是为了数组,$对于原始,它是完全正确的吗?什么是%

syntax perl declaration

18
推荐指数
4
解决办法
3万
查看次数

用Java创建预填充集

在Java中,如何创建在构造时填充的最终Set?我想做类似以下的事情:

static final Set<Integer> NECESSARY_PERMISSIONS 
    = new HashSet<Integer>([1,2,3,6]);
Run Code Online (Sandbox Code Playgroud)

但我不知道Java中的正确语法.

java initialization declaration set

18
推荐指数
5
解决办法
4万
查看次数

cython中def,cdef和cpdef的定义

我想知道的区别def,cdefcpdef当我宣布一个功能.def和其他人之间的区别或多或少都很明显.而且我也看到有时它在声明(cdef void/double/int... name)中添加了返回类型,有时却没有.

我也想知道如何在cython中声明一个字符串变量,因为我不知道它,我把它声明为对象.

python declaration cython

18
推荐指数
2
解决办法
8666
查看次数

C长型是多久?

我知道标题似乎很愚蠢,但我认为值得一提.

以此声明(或定义,可能)为例:

_Thread_local long volatile static int _Atomic const long unsigned x = 10;
Run Code Online (Sandbox Code Playgroud)

我以前认为long long是一种类型,但如果它是一个类型名称,那么如何插入这么多限定符呢?

所以我用这个问题咨询了N1570,只是更加困惑.它提到了一些术语,如" type-specifier "和" type-qualifier ",我long long在"类型说明符"中找不到,但long long在C中不是原始类型?有这么多书告诉我了!


澄清不重复:

是的,我看到了存在的问题与交易long int long,但这个问题有什么做预选赛,并且是C.

c declaration variable-declaration language-lawyer

18
推荐指数
1
解决办法
2359
查看次数

枚举的声明点

枚举类型的声明有什么意义?它是在枚举名称后面吗?我看过Standard C++ 14(n4296)§3.3.2/ 3:

枚举的声明点紧跟在enum-specifier(7.2)或其第一个opaque-enum-declaration(7.2)中的标识符(如果有)之后,以先到者为准

但是当我试图重现它时;

template <class T>
struct CL
{
    using UndType = int;
};

enum class E: CL<E>::UndType;  //error: E is undefined
Run Code Online (Sandbox Code Playgroud)

我在所有编译器上都有一个错误,虽然枚举的枚举E位置在标识符之后并且必须是可见的.

c++ enums declaration c++11 c++14

18
推荐指数
1
解决办法
528
查看次数

Kotlin在声明之前初始化变量?

这是我的测试代码:

class Test {
    init {
        a = 1
    }

    constructor() {
        a = 2
    }

    private var a: Int

    init {
        a = 3
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我删除辅助构造函数:

class Test {
    init {
        a = 1 // Error: Variable cannot be initialized before declaration
    }

//    constructor() {
//        a = 2
//    }

    private var a: Int

    init {
        a = 3
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道

在实例初始化期间,初始化程序块的执行顺序与它们在类主体中出现的顺序相同.

但是,如果存在辅助构造函数,为什么我可以在声明之前初始化变量?


更新:

我发现了一件有趣的事:

class Test {
    init {
        a = log(1)
    }

    constructor() …
Run Code Online (Sandbox Code Playgroud)

constructor initialization declaration kotlin

18
推荐指数
1
解决办法
1999
查看次数

为什么在Java中使用接口名称声明变量?

这是一个真正的初学者问题(我还在学习Java基础知识).

我可以(有点)理解为什么方法会返回List <String>而不是ArrayList <String>,或者为什么它们会接受List参数而不是ArrayList.如果它对方法没有影响(即,如果不需要ArrayList中的特殊方法),这将使该方法更灵活,更容易用于调用者.其他集合类型也是如此,例如Set或Map.

我不明白的是:通常的做法是创建这样的局部变量:

List<String> list = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

虽然这种形式不太常见:

ArrayList<String> list = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

这有什么好处?

我只能看到一个小缺点:必须添加java.util.List的单独"import"行.从技术上讲,可以使用"import java.util.*",但我也不经常看到,可能是因为某些IDE自动添加了"import"行.

java variables interface declaration

17
推荐指数
2
解决办法
6045
查看次数

声明变量并使用TryParse在同一行初始化它的任何问题?

这个例子是在C#中,但我希望可以轻松地应用于其他人.

我最近发现以下似乎工作正常:

int i = Int32.TryParse(SomeString, out i) ? i : -1;
Run Code Online (Sandbox Code Playgroud)

不知怎的,似乎变量i在技​​术上不应该在它出现的时候可访问TryParse.或者我是否正确地假设int i有效地声明变量,即使声明还没有结束呢?

c# initialization declaration

17
推荐指数
1
解决办法
2991
查看次数

C中有指针声明的约定吗?

声明在C指针,有2个(编辑:3)的变体:

变式A:
__CODE__

变式B:
__CODE__

变式C:
__CODE__

  • 在A中,间接运算符已附加到该类型.
  • 在B中,间接运算符已预先添加到变量中.
  • 在C中,间接运算符在类型和变量之间自由站立.

声明指针的方式因我阅读的文档类型而异.一些作者似乎偏好某些变体,其他人使用几种变体.

  • 我是否正确地假设不同变体之间的功能没有区别?
  • 如果是,是否存在一个变量应该在C中使用的约定?

c pointers declaration indirection

17
推荐指数
5
解决办法
4551
查看次数