精华内容
下载资源
问答
  • uint8_t 头文件为#include<stdint.h>

    千次阅读 2015-10-17 14:07:51
    1、字符为中文格式 error: stray ‘\357’ in program error: stray ‘\274’ in program error: stray ‘\232’ in program ...error: invalid suffix "xsrvcc" on integer ...3、数组声明的头文件没有找到 erro

    1、字符为中文格式

    error: stray ‘\357’ in program
    error: stray ‘\274’ in program
    error: stray ‘\232’ in program

    2、变量名命名非法

    error: invalid suffix "xsrvcc" on integer constant

    3、数组声明的头文件没有找到

    error: array type has incomplete element type

    4、int型的变量当做了指针使用

     error: invalid type argument of ‘unary *’ (have ‘int’)

    5、变量类型没有定义

    error: storage size of ‘imsi_resp’ isn’t known

    6、缺少一个花括号,可用#if-#endif分段排查

    error:expected declaration or statement at end of input

    7、uint8_t未定义,需要包含头文件 #include<stdint.h>

    error:expected specifier-qualifier-list before ‘uint8_t’

    展开全文
  • 在代码中经常看到int8_t/int16_t/int32_t/int64_t/uint8_t/size_t/ssize_t,以前对这个问题一直是稀里糊涂的,不明白它们到底是什么数据类型,现在上班了,必须把它弄明白了 uint8_t之类 那么_t的意思到底表示什么...

    在代码中经常看到int8_t/int16_t/int32_t/int64_t/uint8_t/size_t/ssize_t,以前对这个问题一直是稀里糊涂的,不明白它们到底是什么数据类型,现在上班了,必须把它弄明白了

    uint8_t之类

    那么_t的意思到底表示什么?具体的官方答案没有找到,不过我觉得有个答案比较接近。它就是一个结构的标注,可以理解为type/typedef的缩写,表示它是通过typedef定义的,而不是其它数据类型。既然它们都不是新的数据类型,只是使用typedef给类型起的别名,那为什么需要定义它们了?因为跨平台,不同的平台会有不同的字长,所以利用预编译和typedef可以让你最有效的维护你的代码。它们在stdint.h头文件中定义,下面的代码从/usr/include/stdint.h中复制

    <span style="font-family:Microsoft YaHei;font-size:14px;">/* There is some amount of overlap with <sys/types.h> as known by inet code */
    #ifndef __int8_t_defined
    # define __int8_t_defined
    typedef signed char             int8_t;
    typedef short int               int16_t;
    typedef int                     int32_t;
    # if __WORDSIZE == 64
    typedef long int                int64_t;
    # else
    __extension__
    typedef long long int           int64_t;
    # endif
    #endif
    
    /* Unsigned.  */
    typedef unsigned char           uint8_t;
    typedef unsigned short int      uint16_t;
    #ifndef __uint32_t_defined
    typedef unsigned int            uint32_t;
    # define __uint32_t_defined
    #endif
    #if __WORDSIZE == 64
    typedef unsigned long int       uint64_t;
    #else
    __extension__
    typedef unsigned long long int  uint64_t;
    #endif</span>
    看完上面的代码,对uint8_t等就有了清晰明确的认识了

    size_t/ssize_t

    关于size_t/ssize_t,着急的同学可以先看结论

    size_t       无符号整型      32bit系统上等同于unsigned int        64bit系统上等同于unsigned long int

    ssize_t      有符号整型      32bit系统上等同于int                       64bit系统上等同于long int

    32bit系统中 long int为32bit,64bit系统中 long int为64bit

    可以从/usr/include/sys/types.h一层层查找,最终会找到ssize_t和size_t的定义。具体可以参考 http://blog.csdn.net/lalor/article/details/7426184


    如何判断系统位数

    getconf WORD_BIT

    getconf LONG_BIT

    或者使用uname -a





    展开全文
  • Swift int8_tint_fast8_tint8区别

    千次阅读 2019-05-08 19:34:20
    在刚开始学习swift 时 如果你没有其他语言基础,很难理解,为什么一个int类型好想衍生出了,那么多其他的数据类型,例如下图所...的头文件,该头文件定义了一系列各种类别的整数类型typedef名字。尽管速多C++工具支...

    在刚开始学习swift 时 如果你没有其他语言基础,很难理解,为什么一个int类型好想衍生出了,那么多其他的数据类型,例如下图所展示的
    在这里插入图片描述

    这些东西究竟是个什么东西,这里我来说明一下

    这些是 c 语言 和 c++ 语言中的 typedef 类型的一类数据
    \C99标准定义一个叫着<stdint.h>的头文件,该头文件定义了一系列各种类别的整数类型typedef名字。尽管速多C++工具支持该头文件已经有一段时间了,但它尚未正式收录于C++标准,因此,在使用该头文件之前,你应该先阅读你的编译器文档,看看它是否支持该文件。在某些C++ 的编译器中,如GNC,为了能使用C99标准的这些新特性,就在<inttypes.h>头文件中引入了这个文件< stdint.h>.

    字长固定的整型类型

    C99标准在<stdint.h>这个头文件的类型定义中,有一套是字长固定的整型类型:

    int8_t   int16_t   int32_t   int64_t

    与其对应的字长固定的无符号型整型类型有:

    uint8_t   uint16_t   uint32_t   uint64_t

    它们的名字非常直观。例如,int8_t是长度固定为8比特的有符号整型类型,tb而uint8_t则是字长固定为8比特的无符号型整型类型。当你需要确保在不同的平台上,整型数据的字长固定不变,那么你就可以使用这些typedef名字。允许对期望的性质进行更为详细的描述。例如,有的类型的名字是 int_least8_t,它至少有 8 位,还有 int32_t,它恰好是 32 位。

    字长最小的快速整型类型

    该头文件还定义了另外一套typedef名字,即“最小指定长度的快速整数类型”。这套typedef名字中的每一种都表示一种整数类型,它满足在长度不小于某个指定长度的前提下,拥有最快的处理速度。这些整数类型的名字为int_fastX_t(有符号)或者uint_fastX_t(无符号),其中“X”表示最小指定长度。例如,int_fast32_t指得是字长至少为32比特的快速有符号整型类型。最小字长快速整型类型有:

    int_fast8_t  int_fast16_t  int_fast32_t  int_fast64_t

    对应的无符号整型类型有:

    uint_fast8_t  uint_fast16_t  uint_fast32_t  uint_fast64_t

    什么情况下使用这些typedef名字?

    假设你需要一个字长不少于16比特的循环计数器,那么你会希望该计数器的类型总是当前计算机CPU最佳操作的整型类型,而int_fast16_t可以保证任何平台上的编译器总是选择字长不少于16比特的最快整型类型。

    #include <inttypes.h>
    for (int_fast16_t n=0; n<30000; ++n)
    {
    //… do something
    }

    在swift 中 uint_fast8_t  uint_fast16_t  uint_fast32_t  uint_fast64_t 等价于UInt8 UInt16 等

    如下图 官方解释
    在这里插入图片描述
    typealias用来为已存在的类型重新定义名称的。

    通过命名,可以使代码变得更加清晰。使用的语法也很简单,使用 typealias 关键字像普通的赋值语句一样,可以将某个在已经存在的类型赋值为新的名字。

    展开全文
  • 最近在看代码的时候,发现好多师兄写的代码喜欢用下面一些数据类型:typedef uint8...typedef int8_t i8_t; typedef uint16_t u16_t; typedef int16_t i16_t; typedef uint32_t u32_t; typedef int32_t i32_t; typedef u

    最近在看代码的时候,发现好多师兄写的代码喜欢用下面一些数据类型:

    typedef uint8_t     u8_t;
    typedef int8_t      i8_t;
    typedef uint16_t    u16_t;
    typedef int16_t     i16_t;
    typedef uint32_t    u32_t;
    typedef int32_t     i32_t;
    typedef uint64_t    u64_t;
    typedef int64_t     i64_t;
    typedef float       f32_t;
    typedef double      f64_t;
    

    然后让我写一个输出程序的时候,我就有些为难,用C的printf输出时这些32什么的占位符应该用什么呢,以前也没见过这种。
    经过网上查找,发现这些都是已经被typedef过的类型:

    typedef signed char int8_t;
    typedef unsigned char uint8_t;
    
    typedef int int16_t;
    typedef unsigned int uint16_t;
    
    typedef long int32_t;
    typedef unsigned long uint32_t;
    
    typedef long long int64_t;
    typedef unsigned long long uint64_t;   

    这些包含在inttypes.h头文件,据说这样做的原因是方便移植,比如int8就是8位大小占一字节,int32,,32位大小4字节…
    这样相对应的占位符也就清楚了:

    char /unsigned char: %c
    int : %d 
    unsigned int: %u  
    long: %ld; 
    unsigned long:%lu
    long long: %lld(%l64d)
    unsigned long long:%Ilu(%l64u)

    注:此处参考博客C++下基本数据类型总结 (占位符 输入符 输出符)

    so:

    int8_t:%c;
    uint8_t:%c;
    
    int16_t: %d;
    uint16_t:%u;
    
    int32_t:%ld;
    uint32_t:%lu;
    
    int64_t:%lld(%l64d);
    uint64_t:%llu(%l64u);
    展开全文
  • int,int32_t,int64_t

    千次阅读 2018-10-26 12:50:27
    区别 这些是跨平台编程导致的; 一、数据类型特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定...1个字节8位 short 2个字节16位 int 2个字节16位...
  • c/c++: uint8_t & uint16_t & int32_t etc.

    千次阅读 2015-12-22 14:11:53
    c++ 中: 不要在 c++ 代码中使用 c 的头文件,会污染全局空间:#include using namespace std; // 或者使用 std::uint16_t 等 ...using std::int32_t; c 中:#include <stdint.h>see link: http://stackoverflo
  • u16 u32 __u16 __u32 u_int16_t u_int32_t

    千次阅读 2012-09-03 10:44:25
    http://wenku.baidu.com/view/15de23020740be1e650e9ada.html typedef unsigned short u16 typedef unsigned int u32 typedef unsigned short __u16 typedef unsigned int __u32 typedef unsigned __u16 u_int1
  • C语言之intmax_t和uintmax_t

    千次阅读 2017-03-01 10:05:24
    简单介绍C语言的intmax_t和uintmax_t
  • Unknown type name '__int64_t' '__uint32_t'

    万次阅读 2016-11-29 15:14:31
    此种问题,点击错误的地方,你会发现错误的类型(__int64或者uint32_t)所在位置是在/usr/include/sys这个路径,所以在Build Setting的Header Search Path中添加该路径 此类问题基本可以这样解决
  • 给出如下的建议,就是将size_t,或者int32_t这类类型申明的头文件路径加进去到path中。 size_t is defined in stddef.h which is compiler specific. In order to add it to the include path you have to add the...
  • 目录 文章目录目录uint8_t\uint_16_t\uint32_t\uint64_t格式化输出 uint8_t\uint_16_t\uint32_t\uint64_t 在 C99 标准(ISO C99:...#ifndef __int8_t_defined # define __int8_t_defined typedef signed char int8_t;
  • 64位linux系统下编译int32_t

    千次阅读 2015-08-27 14:06:37
    在64位Linux系统下编译执行一下程序输出结果为 40 8 #include ...void print_size(int32_t array[10]){ printf("%ld\n",sizeof(array)); } int main() { int32_t myarray[10]; printf("%ld\n",sizeof(mya
  • C++中IPv4字符串与u_int32_t的转换

    千次阅读 2016-09-25 21:50:31
    C++中IPv4字符串与u_int32_t的转换inet_pton函数简介 IP地址转换函数,可以在将IP地址在“点分十进制”和“二进制整数”之间转换 需要引用的头文件:#include #include #include 函数形式: int inet_pton(int ...
  • Linux 操作int64_t

    千次阅读 2014-01-15 17:36:13
    #define _INT_64_ "lld" #else #define _INT_64_ "ld" #endif 然后输出。。。。 printf("%"_INT_64_"\n", a); 同样可以运用到对各种字符串的操作,如sscanf,或者sprintf等等。。。
  • #include #include int main() { int64_t test = 16; # if __WORDSIZE == 64 printf("%ld\n", test); # else __extension__ printf("%lld\n", test); # endif return 0; }
  • 关于64位整型int64_t

    千次阅读 2010-01-04 22:20:00
    1. 定义在头文件stdint.h中2. 使用printf输出一个int64_t整数时,对于32位系统,应使用%lld,对于64位系统,应使用%ld。 
  • intmax_t

    千次阅读 2012-06-06 07:33:53
    it's in /mytoolchain/sysroot/usr/include/machine/_types.h
  • C++ invoks Python ~ int64_t and __int64

    千次阅读 2011-05-05 17:25:00
      #include<Python.h><br />  intmain() {  return 0; } <br />利用如上代码(cpppython.cc)测试C++调用python(version 2.6.2),g++编译出现如下错误: <br />  ...
  • C99标准引入了一个头文件stdint.h,在这个头文件中用typedef声明了一个类型,如: typedef int int_least32_t; 也就是int_least32_t就是int,既然它就是int,为什么C99标准的人要加这么个东西,难道是吃饱了撑着...
  • C语言stdint.h头文件

    2020-11-20 19:35:24
    是C99的C语言头文件函数,定义了一些整数类型:intN_t,int_leastN_t,int_fastN_t,uintN_t,uint_leastN_t,uint_fastN_t,(N=8 16 32 64)。 int64_t的输出:%lld, uint64_t的输出:%llu, uint64_t的16进制输出:%ll...
  • uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 这些数据类型是 C99 中定义的,具体定义在:/usr/include/stdint.h ISO C99: 7.18 Integer types ...# define __int8_t_defined 
  • 一、stddef.h头文件 ... ptrdiff_t通常被定义为long int类型 与size_t的区别: 因为size_t通常用来表示数组的长度等,所以size_t必须是一个正数所以被设计为unsigned类型 ptrdiff_t应保证足以...
  • typedef unsigned char uint8_t  typedef unsigned int uint16_t  typedef unsigned long int uint32_t  typedef unsigned long long int uint64_t  typedef signed char i
  • /home/djy/AndroidTools/android-ndk-r9b/platforms/android-15/arch-arm/usr/include/android/native_window.h:40:5: error: unknown type name 'int32_t' /home/djy/AndroidTools/android-ndk-r9b/platforms/...
  • 关于stdint.h头文件

    千次阅读 2016-06-26 19:37:25
    stdint.h是c99中引进的一个标准C库的头文件.  stdint.h中定义了一些整数类型,规则如下(其中N可以为8,16,32,64)  intN_t, int_leastN_t, int_fastN_t表示长度为N位的整型数;  uintN_t, uint_...
  • 关于stdint.h(uint16_t uint32_t

    万次阅读 2011-11-01 18:00:45
     stdint.h是c99中引进的一个标准C库的头文件.  stdint.h中定义了一些整数类型,规则如下(其中N可以为8,16,32,64)  intN_t, int_leastN_t, int_fastN_t表示长度为N位的整型数;  uintN_t, uint_leastN_t, u
  • size_t,ssize_t,int和long的区别

    万次阅读 多人点赞 2014-02-25 09:56:39
    size_t是一些C/C++标准在stddef.h中定义的。这个类型足以用来表示对象的大小。 size_t的真实类型与操作系统有关,在32位架构中被普遍定义为...unsigned int size_t; 而在64位架构中被定义为: 1 ty
  • error C2371: “int_fast16_t”: 重定义;不同的基类型 error C2371: “uint_fast16_t”: 重定义;不同的基类型   解决方法就是在出问题的头文件中加以下代码可以解决问题: #if _MSC_VER &gt;= 1600  #d....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 218,464
精华内容 87,385
关键字:

int8_t头文件