相关疑难解决方法(0)

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万
查看次数

C的常见数组长度宏?

我已经看到了几个浮动数组长度的宏:

这个问题:

  • #define length(array) (sizeof(array)/sizeof(*(array)))
  • #define ARRAY_LENGTH(array) (sizeof((array))/sizeof((array)[0]))
  • #define SIZE(array, type) (sizeof(array) / (sizeof(type))

和Visual Studio的_countof:

#define _countof(_Array) (sizeof(_Array) / sizeof(_Array[0]))
Run Code Online (Sandbox Code Playgroud)

我想知道的是:

  1. 那些使用array[0]和有*array什么区别?
  2. 为什么要首选?
  3. 它们在C++方面有区别吗?

c c++ arrays c-preprocessor

32
推荐指数
2
解决办法
3万
查看次数

名称空间用法

我正在尝试以正确的(或至少是最好的)方式开始使用命名空间.

我试图做的第一件事是避免放在using namespace xxx;我的文件的开头.相反,我希望using xxx::yyy尽可能在本地.

这是一个小程序,说明了这一点:

#include <iostream>
#include <cstdlib>
#include <ctime>

int main() {
   using std::cout;
   using std::endl;

   srand(time(0));

   for(int i=0; i<10;++i)
      cout << rand() % 100 << endl;

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我省略了行,using std::cout;或者using std::endl编译器会在我尝试使用cout或时抱怨endl.

但为什么不需要这个srand,rand而且time?我很确定他们在std,因为如果我试着专门倒std::在他们面前,我的代码工作正常.

c++ namespaces std

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

标签 统计

c++ ×3

arrays ×1

c ×1

c-preprocessor ×1

header ×1

include ×1

namespaces ×1

std ×1