c - 为什么代码在 Solaris 上可以运行,但在 Linux 上却不行?

标签 c linux solaris

我有一个 C 代码,它在 Solaris 机器上运行良好,但相同的代码有时会出现段错误,有时会产生不同的输出。

以下是我在两台机器上获得差异的部分:

FILE *inf;
unsigned char *ptr;
unsigned short *ds;
int n, s; 
char work[100];

inf = (FILE *) fopen("Filename", "r");  
s = fseek(inf, 0, SEEK_SET);
n = fread(work, 1, sizeof(work), inf);
ptr = (unsigned char *)work;
ptr += 8;

count = 0;
ds = (unsigned short *) ptr;
count = *ds;

当我打印 count 的值时,它在 Solaris 机器上是 15 而在 Linux 机器上是 768 .

请建议我在 Linux 机器上对代码进行更改。

最佳答案

我不认为(只是)字节顺序。 15 = 0x000F。 768 = 0x0300。不过,这可能与 char 的大小有关。尝试在两台机器上打印 CHAR_BIT,看看会得到什么。

关于c - 为什么代码在 Solaris 上可以运行,但在 Linux 上却不行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18273144/

相关文章:

makefile - Solaris 10 Makefile 中条件的语法是什么?

c++ - 从存储过程打印值

c# - dllexport 结构指针并返回 uint8_t

c - 我希望能够向自身添加变量,以便它们与我分配给它们的值相匹配

c - 我尝试进行的新系统调用有问题(Ubuntu 18.04.1 LTS 内核 :4. 17.4)

linux - 使 inotifywait 监视符号链接(symbolic link)

android - USB 调试未列出我的设备

linux - bash : $_ in cronjob is empty

在 Mac OS X 10.7 上编译基本的 OpenCV 程序

c++ - 如何在 Solaris 10 上替换 posix_memalign