相关疑难解决方法(0)

我在哪里可以找到当前的C或C++标准文档?

对于许多问题,答案似乎可以在"标准"中找到.但是,我们在哪里找到它?最好是在线.

谷歌搜索有时会觉得徒劳,尤其是对于C标准,因为他们在编程论坛的大量讨论中被淹没.

要开始这个,因为这些是我现在正在搜索的,那里有很好的在线资源:

  • C89
  • C99
  • C11
  • C++ 98
  • C++ 03
  • C++ 11
  • C++ 14

c c++ standards c++-faq

394
推荐指数
8
解决办法
12万
查看次数

使用static const + const作为数组绑定

我正在做这样的事情

Class.hpp:

 class Class {

 private:
     static const unsigned int arraySize;
     int ar[arraySize+2];
 };
Run Code Online (Sandbox Code Playgroud)

Class.cpp:

#include <Class.hpp>
const unsigned int arraySize = 384;
Run Code Online (Sandbox Code Playgroud)

编译器(q ++,基于g ++的QNX OS的c ++编译器)error: array bound is not an integer constant在编译单元时给了我Class.hpp(包括编译Class.cpp时).

为什么不工作?我知道静态const成员可以用作数组绑定,由C++标准保证(请参阅此anwser).但是为什么编译器看不到static const + const作为常量的结果呢?

c++ arrays qnx

13
推荐指数
1
解决办法
8300
查看次数

每个C++程序员都应该阅读ISO标准才能变得专业吗?

每个C++程序员都应该阅读ISO标准才能变得专业吗?

c++

5
推荐指数
3
解决办法
719
查看次数

将没有定义的静态const int的地址传递给模板是合法的C++吗?

我无法确定这些代码是否应该编译,或者我只是尝试了两个编译器都有错误(GCC 4.2和Sun Studio 12).通常,如果您在头文件中声明了静态类成员,则需要在某个源文件中定义它.但是,静态常量积分的标准中存在例外.例如,允许这样做:

#include <iostream>

struct A {
    static const int x = 42;
};
Run Code Online (Sandbox Code Playgroud)

无需在类体外部添加x的定义.我正在尝试做同样的事情,但我也取x的地址并将其传递给模板.这导致链接器错误抱怨缺乏定义.下面的例子没有链接(缺少A :: x的定义),即使它们都在同一个源文件中:

#include <iostream>

template<const int* y>
struct B {
    static void foo() { std::cout << "y: " << y << std::endl; }
};

struct A {
    static const int x = 42;
    typedef B<&x> fooness;
};

int main()
{
    std::cout << A::x << std::endl;
    A::fooness::foo();
}
Run Code Online (Sandbox Code Playgroud)

这是奇怪的,因为只要我不将地址传递给模板,它就可以工作.这是一个错误还是某种技术上符合标准的?

编辑:我应该指出&A :: x 不是运行时值.在编译时为逻辑分配的变量留出内存.

c++ standards static templates const

2
推荐指数
1
解决办法
1133
查看次数

标签 统计

c++ ×4

standards ×2

arrays ×1

c ×1

c++-faq ×1

const ×1

qnx ×1

static ×1

templates ×1