没有看到你的代码,很难说。例如,如果你依赖于 long 是4个字节,那么在64位机器上就不正确了。
malloc
分配 2GB 的内存。在 32 位系统上可能无法正常工作。 - xanatosint foo[sizeof(long) == 4 ? 1 : -1]
。这正是在编写代码时静态地断言任何你对实现细节的假设的好方法,试图阻止它编译。 - Steve Jessop在你的情况下应当保证源代码可移植性和可编译性。
如果您使用依赖特定操作系统的外部库或GUI框架,可能会发生变化,但这不是您的情况,所以您应该可以顺利进行。
#ifdef WHATEVER_OS
中,否则您的代码就会变得不可移植。这就是为什么出现了像POSIX这样的标准,以统一跨不同操作系统的系统调用接口。
将您的代码限制为POSIX定义的系统调用,并使用符合POSIX标准的操作系统,通常应该可以避免担忧,只有少数例外。
仅仅使用C语言并不能保证代码在任何支持C语言的平台上都是可移植的。有很多陷阱需要避免,比如依赖于类型大小、字节序或未定义行为。
实际上,一个非平凡的程序很少能够在除了你已经验证过它可以运行的平台上进行移植。但你可以采取措施来尝试减少问题的发生几率。