标签: declaration

为什么c ++指针*与声明的变量关联,而不是类型?

为什么C++的设计使得在同一行上声明两个int*的正确方法是

int *x, *y;
Run Code Online (Sandbox Code Playgroud)

int* x,y;
Run Code Online (Sandbox Code Playgroud)

我知道有些人认为你应该避免使用任何形式并在自己的行上声明每个变量,但我对为什么做出这个语言决定感兴趣.

c++ pointers language-design declaration

21
推荐指数
2
解决办法
1558
查看次数

在C#和VB中声明时变量的默认值?

任何人都可以告诉我在C#和vb中声明时变量的默认值是什么?

variables default declaration

20
推荐指数
4
解决办法
6万
查看次数

undefined C struct forward声明

我有一个头文件port.h,port.c和我的main.c

我收到以下错误:'ports'使用未定义的struct'port_t'

我想,因为我在.h文件中声明了结构,并且.c文件中的实际结构是可以的.

我需要有前向声明,因为我想在port.c文件中隐藏一些数据.

在我的port.h中,我有以下内容:

/* port.h */
struct port_t;
Run Code Online (Sandbox Code Playgroud)

port.c:

/* port.c */
#include "port.h"
struct port_t
{
    unsigned int port_id;
    char name;
};
Run Code Online (Sandbox Code Playgroud)

main.c中:

/* main.c */
#include <stdio.h>
#include "port.h"

int main(void)
{
struct port_t ports;

return 0;
}
Run Code Online (Sandbox Code Playgroud)

非常感谢任何建议,

c struct declaration forward

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

Scala:为什么在声明期间需要为var/val赋值

除非我做错了.我们似乎无法做到这样的事情:

var x;
x = 1;
Run Code Online (Sandbox Code Playgroud)

在Scala中,但您必须声明并为其赋值.为什么会出现这种情况有什么理由吗?

scala declaration

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

为什么变量声明作为for循环的条件运行良好?

什么是声明的返回值/类型int i = 5

为什么不编译这段代码:

#include <iostream>

void foo(void) {
    std::cout << "Hello";
}

int main()
{
    int i = 0;
    for(foo(); (int i = 5)==5 ; ++i)std::cout << i; 
}
Run Code Online (Sandbox Code Playgroud)

虽然这样做

#include <iostream>

void foo(void) {
    std::cout << "Hello";
}

int main()
{
    int i = 0;
    for(foo(); int i = 5; ++i)std::cout << i; 
}
Run Code Online (Sandbox Code Playgroud)

c++ for-loop declaration language-lawyer

20
推荐指数
1
解决办法
1533
查看次数

为什么需要前瞻性声明?

可能重复:
C++应该删除头文件吗?

在像C#和Java这样的语言中,没有必要在使用它之前声明(例如)一个类.如果我理解正确,这是因为编译器对代码进行了两次传递.在第一个中它只是"收集可用信息",在第二个中它检查代码是否正确.

在C和C++中,编译器只进行一次传递,因此当时所有东西都需要可用.

所以我的问题基本上就是为什么不用C和C++这样做.它不会消除头文件的需求吗?

c c++ compiler-construction declaration

19
推荐指数
2
解决办法
5070
查看次数

函数内部是否有函数声明?

我们可以在函数内声明函数(我想要一个局部变量,但它作为函数声明解析):

struct bvalue;
struct bdict {
    bdict(bvalue);
}
struct bvalue {
    explict operator bdict() const;
}
struct metainfo {
    metainfo(bdict);
}
void foo(bvalue v) {
    metainfo mi(bdict(v)); // parses as function declaration
    metainfo mi = bdict(v); // workaround
                            // (this workaround doesn't work in the presence of explicit ctors)
}
Run Code Online (Sandbox Code Playgroud)

唯一的原因是"因为它使解析器变得更简单"和"因为标准是这样说的",还是有一个不明确的用途?

c c++ declaration

19
推荐指数
2
解决办法
3589
查看次数

声明中的哪个位置可以放置存储类说明符?

例如,让我们考虑一下static存储类说明符.以下是此存储类说明符的有效和不正确用法的几个示例:

static int a;        // valid
int static b;        // valid

static int* c;       // valid
int static* d;       // valid
int* static e;       // ill-formed

static int const* f; // valid
int static const* g; // valid
int const static* h; // valid
int const* static i; // ill-formed

typedef int* pointer;
static pointer j;    // valid
pointer static k;    // valid
Run Code Online (Sandbox Code Playgroud)

(标记为"有效"的声明被Visual C++ 2012,g ++ 4.7.2和Clang ++ 3.1接受.标记为"格式错误"的声明被所有这些编译器拒绝.)

这看起来很奇怪,因为存储类说明符适用于声明的变量.它是声明的变量,而static不是声明的变量的类型.为什么ei形象k …

c++ declaration storage-class-specifier

19
推荐指数
2
解决办法
3009
查看次数

多个const限定符的含义是什么?

码:

const char* const* const* foo(int bar);
Run Code Online (Sandbox Code Playgroud)

我已经看过双锥体,之前也阻止了指针的修改.我第一次见到生命中的三重常数.想知道它的用途是什么.

c const declaration function-signature

19
推荐指数
3
解决办法
989
查看次数

使用声明链接的程序在MSVS和clang上编译但在GCC上编译

根据c ++标准,以下程序是否格式良好或格式不正确?

namespace X { int i; }

namespace Y { using X::i; }

int main() { using X::i; using Y::i; }
Run Code Online (Sandbox Code Playgroud)

我用不同的编译器得到了不同的结果:

我不想修复这个程序让它在GCC上编译.我只是想知道c ++标准对此有何看法以及为什么三个编译器的行为不同.此外,我想如果这是任何这些编译器中的错误的结果.

c++ declaration using-declaration language-lawyer

19
推荐指数
2
解决办法
376
查看次数