草庐IT

Clang 错误 - 找不到 stddef 文件?

升级到Ubuntu13.10“Saucy”后,Clang现在给我错误信息:clang-Wall-Werror-std=c99-ggdb-O05.1.c-o5.1Infileincludedfrom5.1.c:1:/usr/include/stdio.h:33:11:fatalerror:'stddef.h'filenotfound#include^1errorgenerated.make:***[5.1]Error1顺便说一句,我包含的header是stdio.h而不是stddef.h但我假设stdio.h引用或#includesstddef.h 最佳答案

Clang 错误 - 找不到 stddef 文件?

升级到Ubuntu13.10“Saucy”后,Clang现在给我错误信息:clang-Wall-Werror-std=c99-ggdb-O05.1.c-o5.1Infileincludedfrom5.1.c:1:/usr/include/stdio.h:33:11:fatalerror:'stddef.h'filenotfound#include^1errorgenerated.make:***[5.1]Error1顺便说一句,我包含的header是stdio.h而不是stddef.h但我假设stdio.h引用或#includesstddef.h 最佳答案

c++ - <stddef.h> 中的 'offsetof' 宏是否会调用未定义的行为?

MSVC的实现示例:#defineoffsetof(s,m)\(size_t)&reinterpret_cast((((s*)0)->m))//^^^^^^^^^^^可以看出,它取消引用一个空指针,这通常会调用未定义的行为。这是规则的异常(exception)还是发生了什么? 最佳答案 如果语言标准说“未定义的行为”,任何给定的编译器都可以定义该行为。标准库中的实现代码通常依赖于此。所以有两个问题:(1)代码相对于C++标准是UB吗?这是一个非常困难的问题,因为这是一个众所周知的几乎缺陷,C++98/03标准从未在规范性文本中明确指

c++ - <stddef.h> 中的 'offsetof' 宏是否会调用未定义的行为?

MSVC的实现示例:#defineoffsetof(s,m)\(size_t)&reinterpret_cast((((s*)0)->m))//^^^^^^^^^^^可以看出,它取消引用一个空指针,这通常会调用未定义的行为。这是规则的异常(exception)还是发生了什么? 最佳答案 如果语言标准说“未定义的行为”,任何给定的编译器都可以定义该行为。标准库中的实现代码通常依赖于此。所以有两个问题:(1)代码相对于C++标准是UB吗?这是一个非常困难的问题,因为这是一个众所周知的几乎缺陷,C++98/03标准从未在规范性文本中明确指

c - stddef.h : error: duplicate 'unsigned'

我在Windows7x64SUA/Interix的64位GCC编译器上编译grep。它在stddef.h中标记的行上阻塞:#ifndef_SIZE_T_DEFINED#ifdefined(lp64)||defined(_WIN64)#ifdeflp64typedefunsignedlongsize_t;//make的输出是:makeall-recursiveMakingallinintlgcc-c-DLOCALEDIR=\"/usr/local/share/locale\"-DLOCALE_ALIAS_PATH=\"/usr/local/share/locale\"-DLIBDIR=\

c - 为什么/usr/include/linux/stddef.h 是空的?

这个头文件应该定义NULL或size_t等宏,但是我发现/usr/include/linux/stddef.h是空的?为什么? 最佳答案 header的实际位置是实现定义的。你看的不是典型的包含在gcc中。您可以通过以下方式准确找到它在系统中的位置:gcc-E-'|grepstddef.h相当于包含标题在一个空的C文件中运行gcc-E在上面。/usr/include/linux中的header用于编译C库(通常是Linux上的glibc)。GNUmanual说:Thelinux,asmandasm-genericdirectorie

c++ - 我应该为 size_t 包含 stddef.h 还是 cstddef

当我想使用size_t时在C++中,我应该包含或?我听几个人说是个坏主意,应该弃用。这是为什么呢? 最佳答案 stddef.h是C头文件。姓名size_t在它的全局命名空间中。另一方面,它是一个C++头文件,它将C名称包装到std命名空间中,这自然是C++方法,所以如果包含并且编译器是兼容的,你必须使用std::size_t.显然,在C++中,C++方法更合适。从技术上讲,Cheader也可能包含std命名空间中的名称。但是Cheader(以.h结尾的)也将名称引入全局命名空间(从而污染了它)。

c++ - 编译错误: "stddef.h: No such file or directory"

每当我尝试编译这段代码时,总是会出现这个错误:Infileincludedfrom/usr/include/wchar.h:6:0,from/usr/lib/gcc/i686-pc-cygwin/4.9.2/include/c++/cwchar:44,from/usr/lib/gcc/i686-pc-cygwin/4.9.2/include/c++/bits/postypes.h:40,from/usr/lib/gcc/i686-pc-cygwin/4.9.2/include/c++/iosfwd:40,from/usr/lib/gcc/i686-pc-cygwin/4.9.2/inc

c++ - 编译错误: "stddef.h: No such file or directory"

每当我尝试编译这段代码时,总是会出现这个错误:Infileincludedfrom/usr/include/wchar.h:6:0,from/usr/lib/gcc/i686-pc-cygwin/4.9.2/include/c++/cwchar:44,from/usr/lib/gcc/i686-pc-cygwin/4.9.2/include/c++/bits/postypes.h:40,from/usr/lib/gcc/i686-pc-cygwin/4.9.2/include/c++/iosfwd:40,from/usr/lib/gcc/i686-pc-cygwin/4.9.2/inc