问题标签 [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.
c++ - 在 C++98 中初始化矩阵的正确方法是什么?
- 我不是程序员
- 我想在 win32 中编译 Inkscape,并偶然发现了这些错误消息:
ui/dialog/filedialogimpl-win32.cpp:1379: 错误:在 C++98 中,'matrix' 必须由构造函数初始化,而不是由 '{...}'
make[1]: *** [ui/dialog/ filedialogimpl-win32.o] 错误 1
可疑代码filedialogimpl-win32.cpp
:
那么它是如何用 C++98 标准编写的呢?
我在谷歌上搜索过,但没有人遇到过这种情况,这可能是无关的吗?
c++ - 为什么 GCC 允许在 C++ 中使用 round() 即使带有 ansi 和 pedantic 标志?
-ansi
即使带有and-pedantic
标志,这个程序在 GCC 下编译是否有充分的理由?
这编译干净(甚至没有警告)与g++ -ansi -pedantic -Wall test.cpp -o test
.
我看到两个问题:
round()
不应该在符合 ISO 标准的模式下对 C++ 可用(因为它来自 C99)- 即使
round()
在这种情况下可用,也只能来自std
命名空间
我错了吗?
c++ - 编写 ANSI C++ 代码的资源
上一次大量使用 C++ 是在几年前,而且是严格在 Windows 平台上完成的。具体来说,我使用 Microsoft Visual Studio 作为我的 IDE,并开发了一些习惯模式来使用 Microsoft 的 C++ 版本。例如,我使用了void main()而不是标准的int main()。
现在,我正在学习一个需要开发符合 ANSI C++ 的程序的课程,并且代码将使用 g++ 编译。我很快了解到系统(“PAUSE”)在 g++ 中不起作用,可能是微软的东西。
有谁知道任何好的资源(网站、教程、书籍),我可以在其中了解更多更好的 ANSI C++ 投诉?
谢谢你。
c++ - 什么是“ANSI C++”?
有人告诉我,C++98 在正式标准化为 ISO/IEC 14882:1998 之前是在 ANSI 下编写的。
我知道 ANSI 与 C 有关,但我似乎找不到太多可以证明短语“ANSI C++”非常准确的方法。
- “ANSI C++”是对 C++98 的一个很好的描述吗?
- “ANSI C++”是对 C++ 标准后续版本的一个很好的描述吗?
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
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 来说不是微不足道的。有任何想法吗?
c++ - std::tr1::function - 在公共容器中存储各种类型的函数对象
我正在将我的仿函数实现转换为std::tr1::function
(原因是在我的实现中,我们需要为每个函数类型预定义类型和仿函数类,我想扩展它以使用任何函数)。
我有
我想把它添加到一些常见的容器中
那么,如何声明容器,它必须是什么类型才能接受任何类型的函数?有可能吗?
第二个问题——如何调用容器中的函数,像这样:
PS也许还有另一种解决方案,我对这个话题还不够了解。将感谢您的回答。
我处理 GNU C++98。
c++ - std::vector<> 用 resize() 派生,不初始化原语 & 转发construct_back
因此,在对性能敏感的应用程序中,有很多情况需要它,而我终于找到了压倒骆驼的稻草。它需要在 C++98 中编译,因为我们至少有一个平台只保证符合 C++98。
希望对我想要的内容进行编辑以更清楚地说明。
例子:
这是通用的 C 接口,几乎与所有 C 库一起用于将数据写入缓冲区。通常在处理包含原语的缓冲区时也会出现同样的问题。新的调整大小看起来像这样:
construct_back 将是一个转发构造函数,对于 1 个 const 参数,它看起来像这样(未经测试):
construct_back 必须具有所有可能数量的参数^2 重载,这是 C++98 中完美转发的常见蛮力方法。
c++ - 为什么 c++11 上的 std::list 更大?
使用此代码:
我设法注意到,在 GCC 4.7std::list<void*>
上,C++98 的大小为 16 字节,而 C++11 的大小为 24 字节。
我想知道 std::list 上发生了什么变化使它变大了。
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