求助: 关于size_t类型

时间:2022-03-31 17:01:35
刚开始学C++, 开发环境使用的是Dev-C++, 编译以下代码提示'size_t' does not name a type 

int main()
{
    const size_t array_size=10;
    int ia[array_size];
    for(size_t ix=0;ix!=array_size;++ix){
        ia[ix]=ix;
    }
    return 0;
}

但是如果包含头文件iostream 或者string, 编译的时候可以通过.

#include <iostream>
int main()
{
    const size_t array_size=10;
    int ia[array_size];
    for(size_t ix=0;ix!=array_size;++ix){
        ia[ix]=ix;
    }
    return 0;
}

请教:
1. 使用size_t类型, 一定要包含头文件?
2. 如果一定要包含头文件, 包含iostream或者string都可以?
谢谢!

20 个解决方案

#1


using namespace std;

#2


/* __size_t is a typedef on FreeBSD 5!, must not trash it. */
#else
#define __size_t
#endif
#ifndef __SIZE_TYPE__
#define __SIZE_TYPE__ long unsigned int
#endif
#if !(defined (__GNUG__) && defined (size_t))
typedef __SIZE_TYPE__ size_t;
#ifdef __BEOS__
typedef long ssize_t;

#3


谢谢楼上2位.

关于1楼
还是提示'size_t' does not name a type  
using namespace std;
int main()
{
  const size_t array_size=10;
  int ia[array_size];
  for(size_t ix=0;ix!=array_size;++ix){
  ia[ix]=ix;
  }
  return 0;
}

关于2楼
刚开始学C++, 没有看懂, 谁帮忙解释一下, 谢谢!

#4


c语言包含stddef.h
c++包含cstddef

#5


实际是 typedef unsigned int size_t;
而这条定义语句被放在名空间namespace中了,所以要包含才能使用,否则未定义

#6


哦, 我明白了, ayw215应该是对的, 需要包含cstddef头文件, 以下引用百度百科:

size_t 类型定义在cstddef头文件中,该文件是C标准库的头文件stddef.h的C++版。它是一个与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小。

如果没有异议, 今天晚上结贴啦.

#7


有异议, 好久没分入账了,楼主晚上别忘了把我捎上,thanks

#8


我DEV-C++  按我说的编译没问题

#9


该回复于2010-07-28 14:22:16被版主删除

#10


To pengzhixi, 不知是否我们使用的Dev-C++不一样? 我的是4.9.9.2版.
求助: 关于size_t类型

#11



typedef size_t unsigned integer;

#12



typedef size_t unsigned int

#13


using namespace std

#14


学习了

#15


应该是用户自定义的吧

#16


4.9版本的devcpp该淘汰了,请使用wxdevcpp,现在已经是7.x版本了。

#17


http://topic.csdn.net/u/20081013/21/1dc799fd-36ac-46bc-a911-e8ed07cd11d9.html

#18


是一个 数组下标的类型吧

#19


unsigned integer!

#20


#include <cstddef> // For size_t

#1


using namespace std;

#2


/* __size_t is a typedef on FreeBSD 5!, must not trash it. */
#else
#define __size_t
#endif
#ifndef __SIZE_TYPE__
#define __SIZE_TYPE__ long unsigned int
#endif
#if !(defined (__GNUG__) && defined (size_t))
typedef __SIZE_TYPE__ size_t;
#ifdef __BEOS__
typedef long ssize_t;

#3


谢谢楼上2位.

关于1楼
还是提示'size_t' does not name a type  
using namespace std;
int main()
{
  const size_t array_size=10;
  int ia[array_size];
  for(size_t ix=0;ix!=array_size;++ix){
  ia[ix]=ix;
  }
  return 0;
}

关于2楼
刚开始学C++, 没有看懂, 谁帮忙解释一下, 谢谢!

#4


c语言包含stddef.h
c++包含cstddef

#5


实际是 typedef unsigned int size_t;
而这条定义语句被放在名空间namespace中了,所以要包含才能使用,否则未定义

#6


哦, 我明白了, ayw215应该是对的, 需要包含cstddef头文件, 以下引用百度百科:

size_t 类型定义在cstddef头文件中,该文件是C标准库的头文件stddef.h的C++版。它是一个与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小。

如果没有异议, 今天晚上结贴啦.

#7


有异议, 好久没分入账了,楼主晚上别忘了把我捎上,thanks

#8


我DEV-C++  按我说的编译没问题

#9


该回复于2010-07-28 14:22:16被版主删除

#10


To pengzhixi, 不知是否我们使用的Dev-C++不一样? 我的是4.9.9.2版.
求助: 关于size_t类型

#11



typedef size_t unsigned integer;

#12



typedef size_t unsigned int

#13


using namespace std

#14


学习了

#15


应该是用户自定义的吧

#16


4.9版本的devcpp该淘汰了,请使用wxdevcpp,现在已经是7.x版本了。

#17


http://topic.csdn.net/u/20081013/21/1dc799fd-36ac-46bc-a911-e8ed07cd11d9.html

#18


是一个 数组下标的类型吧

#19


unsigned integer!

#20


#include <cstddef> // For size_t

#21