问题标签 [c++98]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1361 浏览

c++ - 在 C++98 中初始化矩阵的正确方法是什么?

  1. 我不是程序员
  2. 我想在 win32 中编译 Inkscape,并偶然发现了这些错误消息:

ui/dialog/filedialogimpl-win32.cpp:1379: 错误:在 C++98 中,'matrix' 必须由构造函数初始化,而不是由 '{...}'
make[1]: *** [ui/dialog/ filedialogimpl-win32.o] 错误 1

可疑代码filedialogimpl-win32.cpp

那么它是如何用 C++98 标准编写的呢?

我在谷歌上搜索过,但没有人遇到过这种情况,这可能是无关的吗?

0 投票
3 回答
1870 浏览

c++ - 为什么 GCC 允许在 C++ 中使用 round() 即使带有 ansi 和 pedantic 标志?

-ansi即使带有and-pedantic标志,这个程序在 GCC 下编译是否有充分的理由?

这编译干净(甚至没有警告)与g++ -ansi -pedantic -Wall test.cpp -o test.

我看到两个问题:

  1. round()不应该在符合 ISO 标准的模式下对 C++ 可用(因为它来自 C99)
  2. 即使round()在这种情况下可用,也只能来自std命名空间

我错了吗?

0 投票
9 回答
1088 浏览

c++ - 编写 ANSI C++ 代码的资源

上一次大量使用 C++ 是在几年前,而且是严格在 Windows 平台上完成的。具体来说,我使用 Microsoft Visual Studio 作为我的 IDE,并开发了一些习惯模式来使用 Microsoft 的 C++ 版本。例如,我使用了void main()而不是标准的int main()

现在,我正在学习一个需要开发符合 ANSI C++ 的程序的课程,并且代码将使用 g++ 编译。我很快了解到系统(“PAUSE”)在 g++ 中不起作用,可能是微软的东西。

有谁知道任何好的资源(网站、教程、书籍),我可以在其中了解更多更好的 ANSI C++ 投诉?

谢谢你。

0 投票
6 回答
14222 浏览

c++ - 什么是“ANSI C++”?

有人告诉我,C++98 在正式标准化为 ISO/IEC 14882:1998 之前是在 ANSI 下编写的。

我知道 ANSI 与 C 有关,但我似乎找不到太多可以证明短语“ANSI C++”非常准确的方法。

  • “ANSI C++”是对 C++98 的一个很好的描述吗?
  • “ANSI C++”是对 C++ 标准后续版本的一个很好的描述吗?
0 投票
2 回答
1508 浏览

c++ - Vector of fixed array in c++98

I need to store an indeterminable number of triangles in a vector, therefore, it would be something like:

But that is not valid C++98. What are other solutions that do not involve a triangle struct?

Thanks

0 投票
2 回答
1245 浏览

c++ - std::copy/memcpy/memmove 优化

我查看了 GCC STL (4.6.1) 并看到它std::copy()使用优化版本,以防内置函数__is_trivial()评估为true.

由于std::copy()std::reverse_copy()模板对于复制数组中的元素非常有用,我想使用它们。但是,我有一些类型(它们是模板实例化的结果),它们是包含一些琐碎值、没有指针并且没有复制构造函数或赋值运算符的结构。

G++ 是否足够聪明,可以发现我的类型实际上是微不足道的?C++98 中是否有任何方法可以确保 STL 实现知道我的类型是微不足道的?

is_trivial<>我猜想在 C++11 中,使用类型特征会变得很方便。这是正确的吗?

谢谢!

编辑:很抱歉这么晚了,但这里有一个非常简单的Type类的例子,它对 GCC 和 llvm 来说不是微不足道的。有任何想法吗?

0 投票
1 回答
348 浏览

c++ - std::tr1::function - 在公共容器中存储各种类型的函数对象

我正在将我的仿函数实现转换为std::tr1::function(原因是在我的实现中,我们需要为每个函数类型预定义类型和仿函数类,我想扩展它以使用任何函数)。

我有

我想把它添加到一些常见的容器中

那么,如何声明容器,它必须是什么类型才能接受任何类型的函数?有可能吗?

第二个问题——如何调用容器中的函数,像这样:

PS也许还有另一种解决方案,我对这个话题还不够了解。将感谢您的回答。

我处理 GNU C++98。

0 投票
3 回答
607 浏览

c++ - std::vector<> 用 resize() 派生,不初始化原语 & 转发construct_back

因此,在对性能敏感的应用程序中,有很多情况需要它,而我终于找到了压倒骆驼的稻草。它需要在 C++98 中编译,因为我们至少有一个平台只保证符合 C++98。

希望对我想要的内容进行编辑以更清楚地说明。

例子:

这是通用的 C 接口,几乎与所有 C 库一起用于将数据写入缓冲区。通常在处理包含原语的缓冲区时也会出现同样的问题。新的调整大小看起来像这样:

construct_back 将是一个转发构造函数,对于 1 个 const 参数,它看起来像这样(未经测试):

construct_back 必须具有所有可能数量的参数^2 重载,这是 C++98 中完美转发的常见蛮力方法。

0 投票
1 回答
3231 浏览

c++ - 为什么 c++11 上的 std::list 更大?

使用此代码:

我设法注意到,在 GCC 4.7std::list<void*>上,C++98 的大小为 16 字节,而 C++11 的大小为 24 字节。

我想知道 std::list 上发生了什么变化使它变大了。

0 投票
2 回答
6698 浏览

c++ - 在 C++98 和 C++11 中访问枚举值

我在“Foo”类(下)中定义了一组枚举值。

我正在使用结构来缩小 Baz 枚举值的范围,并显示有一组相关值。

我的目标是将枚举类型中的值分配给变量。使用上面的类定义,可以做到这一点:

但是,我觉得:

  • 乍一看,myValue似乎被初始化为Fii::Foo::Bar但这只是因为 enum 是在父级中对相关常量进行分组的黑客(本例中为Bar

为了提高准备,II 将代码重构为:

使用这个新的类定义,可以做到这一点:

Q1) 为什么Fii::Foo::Bar::Baz myValue = Fii::Foo::Baz::BAZ1只适用于 C++11 ?

Q2) 在 C++98 中,有没有办法编写Fii::Foo::Baz myValue = Fii::Foo::Baz::BAZ1?您可以在类定义中进行任何您喜欢的更改。

环境: - 支持 C++11 的 Clang 编译器 - Xcode 4 - Mac OS OS 10.8