我下载了几个版本,glibc即2.18,2.19,2.20,2.23,我试图找到该文件iso646.h但找不到它.我认为它是glibc的标准部分所以它应该在那里.任何人都知道它为什么不存在?
但是,我在/ usr/lib/gcc目录中的本地机器上找到了它.所以我假设它是用gcc安装的.但我仍然不知道为什么我不能在glibc来源中找到它.我正在粘贴我在下面找到的内容:
/* Copyright (C) 1997-2014 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
Under Section 7 of GPL version 3, you are granted additional
permissions described in the GCC Runtime Library Exception, version
3.1, as published by the Free Software Foundation.
You should have received a copy of the GNU General Public License and
a copy of the GCC Runtime Library Exception along with this program;
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
/*
* ISO C Standard: 7.9 Alternative spellings <iso646.h>
*/
#ifndef _ISO646_H
#define _ISO646_H
#ifndef __cplusplus
#define and &&
#define and_eq &=
#define bitand &
#define bitor |
#define compl ~
#define not !
#define not_eq !=
#define or ||
#define or_eq |=
#define xor ^
#define xor_eq ^=
#endif
#endif
Run Code Online (Sandbox Code Playgroud)
编辑:我在每个下载的glibc源代码中找到的唯一文件(类似于iso646.h)(来自gnu.org)是符合/ data/iso646.h的数据,如下所示:
#if !defined ISO && !defined POSIX && !defined XPG3 && !defined XPG4
macro and
macro and_eq
macro bitand
macro bitor
macro compl
macro not
macro not_eq
macro or
macro or_eq
macro xor
macro xor_eq
#if !defined ISO && !defined ISO99 && !defined ISO11
allow *_t
#endif
#endif
Run Code Online (Sandbox Code Playgroud)
但是因为我不知道如何macro在这里定义,或者定义它的位置,这个文件对我来说是不可理解的.
该文件不是libc的一部分,而是编译器.
https://gcc.gnu.org/onlinedocs/gccint/Headers.html
$ find /|grep iso646.h
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/iso646.h
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/iso646.h
Run Code Online (Sandbox Code Playgroud)