我正在使用不同版本的 gcc 的 2 台不同的机器上编译我的源代码。
标志 c89
-Wall -Wextra -Wunreachable-code -g -m32 -D_DEBUG -O0 -D_LARGEFILE64_SOURCE -D_REETRANT -D_THREAD_SAFE
一个是redhat-4
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)
Linux 203_test_server 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
一个是 Fedora 18
gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8)
Linux localhost.localdomain 3.8.1-201.fc18.x86_64 #1 SMP Thu Feb 28 19:23:08 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
我的 fedora 18 编译没有错误。但是,在 redhat 4 机器上我得到了一些错误。
channel.h:35: error: redefinition of typedef ‘channel_t’
internal.h:19: error: previous declaration of ‘channel_t’ was here
我认为错误只是一个循环问题。但是,使用相同的代码库在 2 台不同的机器上编译真的会使用 2 个不同版本的 gcc 有所不同吗?
我在想使用较新版本的编译器会产生更多错误,因为较新的编译器可能更严格。
这不是解决错误的问题,而是关于编译器的一般问题。
有没有我可以设置的标志来避免将来发生这种情况。也许如果在这个版本的 gcc 上编译,如果版本不兼容?