草庐IT

c++ - 我如何在不放置 '#include' 语句的情况下访问 cpp 标准库?

我一直在零星地从“加速C++”自学cpp,最近我注意到当我忘记我的#include时声明,我的代码(包括transform和find_if)无论如何都编译并成功运行。在此之后,我尝试完全删除所有标准header包含语句,发现我的代码仍然可以运行。我想我无法理解预处理器命令的问题会在我读完这本书时得到解决,但现在我只需要知道如何确保当我不正确地制作标题时我的终端会对我大喊大叫,这样我就可以学习东西位于std库中的位置。我运行的是OS10.6.5,所以我必须使用以下unixexe文件编译我的代码:CC=g++CFLAGS=-WallPROG=TrainingProject23SRCS=Tr

c++ - 是否可以在 cpp 中检查负 0?

这个问题在这里已经有了答案:Distinguishzeroandnegativezero(3个答案)关闭4年前。这可能是个愚蠢的问题,但我真的对0和负0有疑问。我正在计算一个函数的斜率,根据vector(右或左),它是0或-0。是否可以执行if条件并确定斜率是0还是-0?执行以下操作无效。if(slope==0.0f)std::cout我故意没有放工作源代码,因为我认为它与问题无关。对上述问题的简单回答会有所帮助。

c++ - 在不更改代码的情况下拆分 .cpp 文件

我有一个越来越大的.cpp,为了便于管理,我想将它分成几个文件。但是,有许多全局变量,我想避免维护跨不同文件管理一堆外部声明。有没有办法让多个.cpp文件充当一个文件?本质上,我想要一种划分代码而不被编译器识别的方法。 最佳答案 Isthereawaytohavemultiple.cppfilesactasasinglefile?是的。这就是#include的定义。当您#include一个文件时,您对包含的文件进行了文本替换以代替#include指令。因此,多个包含文件共同作用形成一个翻译单元。在您的情况下,将文件分成几部分。准确地

c++ - 函数原型(prototype) vs 在 cpp 中包含 header

我有做一些工作的功能。啊啊voiddoSomething(intn);A.cpp#include"A.h"voiddoSomething(intn){/*something*/}如果我想在另一个源文件中使用这个函数,最好的选择是什么:1)包含A.hB.cpp#include"A.h"voidanotherTask(){//...doSomething(5);//...}2)或使用前向声明(函数原型(prototype)):B.cppvoiddoSomething(int);voidanotherTask(){//...doSomething(5);//...}关于尽可能多地为类使用前向

c++ - __has_cpp_attribute 不是 'function-like' 宏?

我正在尝试将[[deprecated]]属性引入我的代码库。然而,并不是所有我需要支持的编译器都支持这种语法(在attributestandardizationproposalN2761中描述了标准化之前不同编译器使用的各种方法)。因此,我尝试在此属性中有条件地编译,首先使用__has_cpp_attribute类宏函数(如果可用),如下所示:#ifdefined(__has_cpp_attribute)&&__has_cpp_attribute(deprecated)#defineDEPRECATED(msg)[[deprecated(msg)]]#elifOTHER_COMPILE

c++ - 在 CPP 中用单个引用表示两种或多种数据类型

在我的代码中,对于某些变量,我总是必须编写unsignedlonglong来声明变量。有没有一种方法可以使用单个单词(例如“ULL”)来表示unsignedlonglong,然后使用这种语法来声明其他变量。例如ULL数量; 最佳答案 你必须这样声明:typedefunsignedlonglongULL; 关于c++-在CPP中用单个引用表示两种或多种数据类型,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

c++ - 压缩 .cpp 文件的缺点?

在MSVC++中编译“静态库”项目时,我经常得到几MB大小的.lib文件。如果我使用条件宏并包含指令以在编译时将所有.cpp文件“压缩”到一个.cpp文件中,则.lib文件大小会显着减小。这种做法有什么缺点吗? 最佳答案 UnityBuilds的主要问题在于它们打破了C++的工作方式。在C++中,经过预处理的源文件称为翻译单元。一些符号是这个翻译单元的“私有(private)”符号:在命名空间级别声明为static的符号在匿名命名空间中声明的任何内容如果您合并几个C++文件,那么编译器将共享那些private符号,这些private

c++ - 在 CPP 中制作 vector 三元组的简单方法

在CPP中构造整数vector三元组的简单方法是什么?即不是一对2整数,std::vector>vec;我想将3个整数捆绑在一起作为vector的一个元素。我意识到一种方法是制作2个子嵌套对,但这种方法变得困惑。我不了解CPP的所有细节,因此请推荐一种更简单的方法(如果可用)。谢谢。 最佳答案 std::vector>myvec; 关于c++-在CPP中制作vector三元组的简单方法,我们在StackOverflow上找到一个类似的问题: https://s

c++ - NUMA 感知 Cpp 容器

有没有方便有效的方式以NUMA感知方式使用cpp标准容器API?我想在cpp环境中执行OpenMP并行稀疏矩阵vector乘法。要分配和初始化与NUMA域有关的vector和矩阵值,C代码看起来像这样:size_tN=1000000;double*vecVal=malloc(N*sizeof(double));#pragmaOMPparallelforfor(size_i=0;i在Cpp中,我想使用std::vector(固定大小的std::array也可以)。std::vector::reserve()能解决问题吗?这样做是否合法:std::vectorvec;vec.reserve

c++ - header 中的 private static const 成员变量与 cpp 中的 const 变量

为什么我应该在header中声明一个私有(private)的staticconst变量(并在cpp中初始化它)而不是仅仅在cpp中定义+声明它?即案例1.hclassMyClass{...private:staticconstMyTypesome_constant;}case1.cppconstMyTypeMyClass::some_constant=...;案例2.h//Nomentionofsome_constantatall案例2.cppconstMyTypesome_constant=...;假设遵循常见的c++约定(1个header和cpp仅与1个类相关联,从不与#inclu