相关疑难解决方法(0)

为什么"使用命名空间std"被认为是不好的做法?

我已经告诉别人,编写using namespace std;代码是错误的,我应该用std::coutstd::cin直接代替.

为什么被using namespace std;认为是不好的做法?是低效还是冒着声明模糊变量(与名称std空间中的函数具有相同名称的变量)的风险?它会影响性能吗?

c++ namespaces using-directives std c++-faq

2486
推荐指数
36
解决办法
78万
查看次数

C++ - cmath vs math.h(以及类似的c-prefixed vs .h扩展头)

我已经看到了一些关于iostreamvs 之间差异的信息iostream.h.根据我从中收集的内容,它们之间的区别在于,没有.h扩展名的版本将不会填充命名空间,而具有扩展名的版本将填充.

对于cmathvs,这是一样的math.h吗?为什么cmath(以及许多其他类似的文件)以a c为前缀而不仅仅是math?他们之间有更多的差异吗?

感谢您的时间!

c++ header include

56
推荐指数
2
解决办法
5万
查看次数

包含<cassert>或<assert.h>更好吗?

使用C++ 11,它更好#include <cassert>还是<assert.h>?或者没有区别?

编辑:

我似乎应该在C++程序中包含<xxxx.h>或<cxxxx>吗?认为它归结为污染全局命名空间.这是一个特例,因为assert是一个宏,没有std::assert

c++ c++11

30
推荐指数
2
解决办法
7096
查看次数

我应该为size_t包含stddef.h或cstddef

当我想size_t在C++中使用时,我应该包含<stddef.h>还是<cstddef>?我听过几个人说这<cstddef>是个坏主意,应该弃用.这是为什么?

c++ namespaces naming-conventions size-t header-files

24
推荐指数
3
解决办法
1万
查看次数

在C++中stdlib.h和cstdlib之间的主要区别是什么?

我正在使用EXIT_FAILURE宏,所以我需要包含stdlib.h或cstdlib.但我不知道有什么区别.我应该使用cXXX样式头文件而不是XXX.h吗?

谢谢.

c++

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

#include <cmath> vs C++程序中的#include <math.h>

在C++程序中包含前者而不是后者有哪些考虑因素?我总是包括math.h,stdlib.h从不cmath,cstdlib等等.我不明白后者甚至存在的原因,有人可以请赐教吗?

c c++ coding-style include header-files

10
推荐指数
1
解决办法
4万
查看次数

数学接口与C++中的cMath

我的构建系统MacOS 10.6.3上用于POSIX数学库的接口是math.h,但是在我的目标系统上,接口文件的名称是cmath.h.在学校我们使用cmath,我想确保我的项目在交付时编译,这是如何实现的.学校的服务器和工作站是运行Windows XP的x86.GCC可在两个平台上使用.

c++ gcc cmath

9
推荐指数
1
解决办法
4669
查看次数

为什么以及如何在cstdlib中的global和std命名空间中存在rand()?

据我所知rand(),作为示例函数<cstdlib>,存在于全局和std命名空间中.

实际上,以下将编译没有错误,即调用std::rand()rand()将是合法的.

#include <cstdlib>    
int main() {
    std::rand();
    rand();    
}
Run Code Online (Sandbox Code Playgroud)

它的用途是什么以及它是如何实现的(函数在两个命名空间中)?

c++ namespaces std

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

为什么 abs 不在 std 中?

#include <cmath>
int abs;
int main()
{

}
Run Code Online (Sandbox Code Playgroud)

此代码引发编译错误

error: 'int abs' redeclared as different kind of symbol
note: previous declaration 'int abs(int)'
Run Code Online (Sandbox Code Playgroud)

如果我从cstdlib.

我阅读了这个文档https://en.cppreference.com/w/cpp/numeric/math/abs 其中没有提到abs将在std. 事实上,它明确提到它std::abs无处不在。

其他函数也会发生同样的事情,例如sqrt.

为什么会这样?如何在不弄乱我的命名空间的情况下使用这些函数?如果不可能,是否有 C++ 替代方案?

c++

0
推荐指数
1
解决办法
141
查看次数

STRCPY 是未定义的 C++

我试图实现 strcpy 或 strncpy 并且无论我使用哪个都显示错误。

错误仅在 strncpy 和 strcpy 下

项目.cpp:

#include "Item.h"
#include <iomanip>
#include <iostream>
#include <ctime>
#include <string>
using namespace std;
#include "Date.h"
#include "POS.h"
#include "PosIO.h"

namespace sict {
    Item::Item(){
         _name = '\0';
         _price = 0;
         _taxed ='0';
         _quantity = '\0';
    }

    Item::Item(const char* sku,  const char * name, double price, bool taxed){

        strNcpy(_sku, sku, MAX_SKU_LEN);

         name = new char[20];
        strcpy(_name, name);

        _quantity = 0;
        price = _price;
        if (price = '\0') {
            _taxed = true; …
Run Code Online (Sandbox Code Playgroud)

strcpy strncpy

-1
推荐指数
1
解决办法
7412
查看次数