jjzjj

c++ - 在#include <cstdint> 之后使用类型的 Clang++ -fmodules 错误

当使用-fmodules编译时,以下简单的测试用例文件给我一个编译时错误,提示来自Clang的github镜像的“master”,使用如下所示的命令。我想知道这是否是Clang的新实验模块功能的错误——可能是标准库的模块映射实现的问题——或者我做错了什么。如果我添加-fbuiltin-module-map,错误仍然出现到命令。有趣的是,如果我替换stdint.h,错误不再出现对于cstdint.#includeuint64_tfoo;这是我的编译命令,带有错误信息:anhall@leviathan:/Users/anhall/impersonal/code/llvm-reflexpr/

c++ - cstdint 之外的数字类型

我一直在我的代码中定期使用cstdint的类型(例如uint32_t),但现在它们不太符合我的需求,尤其是在模板方面。有没有办法指定一个两倍于模板参数大小的整数类型?当我的模板传递一个uint32_t时,我需要它为函数内的一个变量创建一个uint64_t。也许更困难的是,当传递一个uint64_t时,我需要它来创建一个“uint128_t”。我可以用两个模板参数的数组来做到这一点,但是我不能将该数组传递给其他模板函数。这是代码的性能关键部分(我正在做密码学)。与此相关,我是否可以包含一些其他header(按优先顺序:标准、提升、其他)给我128位整数?看起来这个问题回答了这个特定部分:

c++ - <cstdint> 与 std::size_t 类型

从我对boost的窥视中和libstdc++,库通常使用std::size_t和std::ssize_t每当事先不知道无符号/有符号索引的上限/下限时。我的问题是:为什么不使用uintmax_t来自而不是std::size_t和intmax_t而不是std::ssize_t? 最佳答案 前者是C++标准的一部分,后者不是。更准确地说,cstdintheader是最近才引入的(在C++11中)。这是因为stdint.h本身是C99的一部分,比C++98更新。 关于c++-与std::siz

c++ - Boost 的 "cstdint"用法

Boost的C99stdint实现非常方便。不过有一件事让我很烦恼。他们将所有typedef转储到boostnamespace中.在使用此工具时,这给我留下了三个选择:使用“usingnamespaceboost”使用“usingboost::[u]_t”使用boost::明确引用目标类型字首;例如,boost::uint32_tfoo=0;选项№1破坏了命名空间的意义。即使在本地范围内使用(例如,在函数内),函数参数之类的东西仍然必须像选项3一样添加前缀。选项№2更好,但是有很多这样的类型,所以它会变得嘈杂。选项3增加了极大的噪音;boost::前缀通常≥所讨论类型的长度。我的问题是

c++ - 标准是否保证 uint8_t、int8_t 和 char 都是唯一类型?

似乎以下内容可以保证通过(已询问here):#includestatic_assert(!std::is_same_v);static_assert(!std::is_same_v);引用cppreference[char]hasthesamerepresentationandalignmentaseithersignedcharorunsignedchar,butisalwaysadistincttype是否也保证int8_t和uint8_t根据显式签名类型定义未定义就char而言,因此也形成一组具有char?的3种不同类型#include#includestatic_assert(

c++ - cstdint : No member named xxx in global namespace 中的错误

什么会导致这些错误?我在Xcode中添加了一个空项目,在HeaderSearchPaths中添加了/usr/local/lib,并添加了一些opencv库。建筑给出了这些错误:更新我的系统上确实安装了stdint.h。我在OS10.9上运行,所以像int_least16_t这样xcode在全局命名空间中找不到的类型似乎已定义。typedefint16_tint_least16_t;。find/Applications/Xcode.app-namestdint.h/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.p

c++ - 在 C++ 中正确使用/包含 uint64_t

这个问题在这里已经有了答案:vs(3个回答)关闭5年前。作为引用,我在C++11中编译。我开始使用棋盘的位图表示作为以棋子为中心的方法来编写国际象棋引擎。似乎要使用的合适类型是uint64_t,但是,在网上搜索了很多之后,我有点不确定这里的“最佳实践”。我开始为游戏板定义.hpp文件。首先,我对不同代码似乎表现出的相似行为感到困惑。#includeuint64_tboard;和#includestd::uint64_tboard;两者都编译得很好。两者有什么区别?这个比那个好吗?此外,我注意到我什至不需要包含cstdint就可以使用uint64_t:#includeuint64_tbo

c++ - 在 C++ 中正确使用/包含 uint64_t

这个问题在这里已经有了答案:vs(3个回答)关闭5年前。作为引用,我在C++11中编译。我开始使用棋盘的位图表示作为以棋子为中心的方法来编写国际象棋引擎。似乎要使用的合适类型是uint64_t,但是,在网上搜索了很多之后,我有点不确定这里的“最佳实践”。我开始为游戏板定义.hpp文件。首先,我对不同代码似乎表现出的相似行为感到困惑。#includeuint64_tboard;和#includestd::uint64_tboard;两者都编译得很好。两者有什么区别?这个比那个好吗?此外,我注意到我什至不需要包含cstdint就可以使用uint64_t:#includeuint64_tbo

c++ - 在带或不带命名空间的 <cstdint> 中使用类型

在C++11中,我可以选择是否要使用在有或没有命名空间std::中定义的类型至少我的编译器(g++4.7)接受这两种变体。我的问题是:使用cstdint中的typedef的推荐方法是什么。有或没有命名空间?有什么优点或缺点?还是只是风格问题?所以变体a):#includestd::uint8_tn=21;回复:#includeusingstd::uint8_t;uint8_tn=21;或变体b):#includeuint8_tn=21; 最佳答案 首选在std中声明的名称命名空间。原因在§17.6.1.3/4(ISO/IEC1488

c++ - <cstdint> 与 <stdint.h>

stdint.h和cstdint有什么区别?它们都在MSVC(VisualStudio2010)和gcc-4.5.1中可用。还都定义了intX_t/uintX_t类型(其中X是类型的字节大小)。如果两个标题中的基本原理相同(可移植类型),我必须做出哪些决定来决定其中一个?stdint.h定义了没有任何命名空间的每个类型,cstdint类型位于std命名空间中。是否有任何理由将定义的类型包含或不包含在std命名空间中?这两个标题有什么不同?cstdint没有文件扩展名并使用c前缀,stdint.h使用.h扩展名.此header的命名约定是什么?c前缀表示这是一个C库?cstdint中缺少
12