【发布时间】:2015-12-16 20:06:57
【问题描述】:
我曾尝试在学校的 mac OS X 上编译一个带有“-Wall -Wextra -Werror”标志的文件,它运行良好,但是当我回家并在 ubuntu 上尝试同样的事情时,它给了我这个错误:
tests/00_part1_ft_memset.spec.c: In function ‘unittest1’:
tests/00_part1_ft_memset.spec.c:9:12: error: ‘memset’ used with constant zero length parameter; this could be due to transposed parameters [-Werror=memset-transposed-args]
mt_assert(memset(b1, 99, 0) == ft_memset(b1, 99, 0));
为什么它在 2 个不同的操作系统上工作方式不同,是否可以让我的 ubuntu 像 OS X 一样反应?有这个的配置文件吗?
【问题讨论】:
-
在您的问题中显示您的
tests/00_part1_ft_memset.spec.c文件 -
@BasileStarynkevitch 看起来相关部分已经显示:
memset(b1, 99, 0)是导致错误的原因。 -
并阅读memset(3)的文档
-
是的,这是产生此错误的部分,但此代码是一个单元测试,它在 mac osx 上运行良好:/您可以在此处找到该文件 -> github.com/yyang42/moulitest/blob/master/libft_tests/tests/…
-
@Nestoyeur 它可能也适用于 Ubuntu。代码没问题。不同的是编译器的挑剔性。你要求编译器非常挑剔,只要一点点 lint 就会出错。现在你有了。什么让你感到惊讶?不同的编译器会发出不同的警告吗?业内任何人都不会感到惊讶。
标签: linux macos gcc compilation clang