在iar中同一个编译器不同工程extern 对象在.h里面定义为什么不能声明16位和8位整形
时间: 2024-03-30 18:34:55 浏览: 16
在 IAR 中,即使是在同一个编译器中,不同工程之间也可能存在不同的编译选项或者预定义宏,这些因素可能会影响整数类型的大小和表现方式。因此,在 .h 文件中声明 extern 对象时,也不能使用特定的整数类型,例如 uint8_t 或 uint16_t。
相反,应该使用通用的整数类型,例如 int 或 unsigned int,并根据需要在代码中进行类型转换。这样可以确保在不同工程中共享的变量能够正常工作,避免编译错误或者运行错误。
相关问题
在iar中同一个软件不同工程extern 对象在.h里面定义为什么不能声明16位和8位整形
在 IAR 中,如果你在一个工程中定义了一个 extern 对象(变量),则在另一个工程中使用该变量时,需要在 .h 文件中声明该变量,但是声明时需要使用与原始定义相同的数据类型。如果原始定义的变量是一个 16 位或 8 位整数类型,那么在 .h 文件中声明该变量时也需要使用相应的数据类型,例如 uint16_t 或 uint8_t。
如果在 .h 文件中声明 extern 对象时使用了错误的数据类型,会导致编译错误,因为编译器无法将不同的数据类型视为同一变量。因此,如果你需要在不同的工程中共享变量,需要确定所有工程中变量的数据类型,并在 .h 文件中声明时使用相同的数据类型。
在iar中同一个编译器extern 对象在.h里面定义为什么不能声明16位和8位整形
在 IAR 中,如果需要在不同的源文件之间共享变量,可以使用 extern 关键字来声明一个全局变量。在 .h 文件中声明 extern 变量时,需要使用与变量原始定义相同的数据类型。如果原始定义的变量是一个 16 位或 8 位整数类型,那么在 .h 文件中声明该变量时也需要使用相应的数据类型,例如 uint16_t 或 uint8_t。
在使用特定的整数类型时,需要确保在不同的源文件之间使用相同的编译选项和预定义宏,以确保整数类型的大小和表现方式相同。否则,在不同的源文件之间使用不同的整数类型可能会导致编译错误或者运行错误。
因此,在 .h 文件中声明 extern 变量时,应该使用与原始定义相同的数据类型,并确保在不同的源文件之间使用相同的编译选项和预定义宏。这样可以确保在不同的源文件之间共享变量时能够正常工作。