我已经告诉别人,编写using namespace std;代码是错误的,我应该用std::cout和std::cin直接代替.
为什么被using namespace std;认为是不好的做法?是低效还是冒着声明模糊变量(与名称std空间中的函数具有相同名称的变量)的风险?它会影响性能吗?
我已经看到了一些关于iostreamvs 之间差异的信息iostream.h.根据我从中收集的内容,它们之间的区别在于,没有.h扩展名的版本将不会填充命名空间,而具有扩展名的版本将填充.
对于cmathvs,这是一样的math.h吗?为什么cmath(以及许多其他类似的文件)以a c为前缀而不仅仅是math?他们之间有更多的差异吗?
感谢您的时间!
使用C++ 11,它更好#include <cassert>还是<assert.h>?或者没有区别?
编辑:
我似乎应该在C++程序中包含<xxxx.h>或<cxxxx>吗?认为它归结为污染全局命名空间.这是一个特例,因为assert是一个宏,没有std::assert?
当我想size_t在C++中使用时,我应该包含<stddef.h>还是<cstddef>?我听过几个人说这<cstddef>是个坏主意,应该弃用.这是为什么?
我正在使用EXIT_FAILURE宏,所以我需要包含stdlib.h或cstdlib.但我不知道有什么区别.我应该使用cXXX样式头文件而不是XXX.h吗?
谢谢.
在C++程序中包含前者而不是后者有哪些考虑因素?我总是包括math.h,stdlib.h从不cmath,cstdlib等等.我不明白后者甚至存在的原因,有人可以请赐教吗?
我的构建系统MacOS 10.6.3上用于POSIX数学库的接口是math.h,但是在我的目标系统上,接口文件的名称是cmath.h.在学校我们使用cmath,我想确保我的项目在交付时编译,这是如何实现的.学校的服务器和工作站是运行Windows XP的x86.GCC可在两个平台上使用.
据我所知rand(),作为示例函数<cstdlib>,存在于全局和std命名空间中.
实际上,以下将编译没有错误,即调用std::rand()和rand()将是合法的.
#include <cstdlib>
int main() {
std::rand();
rand();
}
Run Code Online (Sandbox Code Playgroud)
它的用途是什么以及它是如何实现的(函数在两个命名空间中)?
#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++ 替代方案?
我试图实现 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) c++ ×9
namespaces ×3
header-files ×2
include ×2
std ×2
c ×1
c++-faq ×1
c++11 ×1
cmath ×1
coding-style ×1
gcc ×1
header ×1
size-t ×1
strcpy ×1
strncpy ×1