在64位机器上处理文件但在32位机器上开发

时间:2010-06-24 21:20:59

标签: c matlab file-io 32bit-64bit mex

我将在64位Windows机器中使用C语言的Mexfunction在matlab中读取TDMS文件,但我将在32位Windows机器中开发应用程序。我知道32位机器和64位之间的差异与变量的大小有关。我使用了很多fread(.. sizeof(type)..)。它是在64位机器上运行时会出现问题吗?如果是这样,我怎样才能将它移植到64位?

感谢

3 个答案:

答案 0 :(得分:3)

ISO C99提供标题< stdint.h>,其中定义了intN_t和uintN_t形式的类型,其中N是相应整数或无符号整数类型的宽度。如果实现提供宽度为8,16,32或64的整数类型,则应提供相应的typedef。

答案 1 :(得分:1)

更普遍的问题是你必须知道WROTE文件的机器上变量的大小,而不是读取它们的机器。换句话说,你可以说sizeof(int)并在一些疯狂的64位系统上说8,但如果文件保存在普通的32位机器上,则sizeof(int)可能是4(甚至2,根据ansi c,我认为)。 sizeof命令将告诉您编译时本地计算机上的int或其他大小。但它无法告诉你有关保存文件的机器的任何信息。

最好的办法是看看TDMS标准(我不熟悉它)是否定义了可变大小。如果是这样,你应该使用那些,而不是sizeof。

糟糕的第二种选择是在文件开头有一个测试序列并动态调整变量大小,直到你能正确读取测试序列。

答案 2 :(得分:0)

是的,根据您的操作可能存在问题。例如,如果您依赖指针大小为4个字节或8个字节,这将是一个问题。但是,如果你做的事情不是好事而不是。我想我们必须看到能够告诉你的具体代码。简而言之,应该有一种直接的方式来解决这个问题,而不关心你是否处于64位或32位架构中。