Linux에서 stddef.h는 어디에 정의되어 있습니까?

에반 캐롤

의 값을 찾으려면 stddef.h어디에 정의되어 있습니까? /usr/include/linux/stddef.h거의는 아무 상관이 없다

/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __always_inline
#define __always_inline __inline__
#endif

구체적으로 어떻게 size_t정의 되는지보고 싶었습니다 .

몇 달 후이 질문이 어떻게 whcar_t정의 되는지 알고 싶어서 다시 돌아옵니다 .

내부 stddef.h파일에는에 대한 typedef가 있습니다.

  • ptrdiff_t
  • max_align_t
  • size_t
  • wchar_t
Gilles 'SO- 그만 사악함'

C 표준은 컴파일러 기능과 라이브러리 기능을 구분하지 않습니다. 차이점은 구현 세부 사항이며 플랫폼마다 다를 수 있지만 일반적인 추세가 있습니다. 예를 들어 다음과 같은 기본 정수 타입의 크기 size_t와 같은 관련 매크로 CHAR_BITSIZE_MAX컴파일러와 컴파일러 옵션의 속성은; 반면에의 내용 stdio.h은 일반적으로 컴파일러와 독립적이지만 표준 라이브러리가 파일을 구현하는 방법에 따라 다릅니다.

stddef.h대부분 컴파일러를 선언하므로 컴파일러와 함께 제공됩니다. 예를 들어 32 비트 또는 64 비트 모드에서 컴파일하는 경우 다른 정의를 얻는 것이 더 좋으며 GCC 및 Clang과 같은 다른 정의를 얻을 수 있습니다. 따라서 컴파일러 디렉토리에서 찾으십시오. 일부 컴파일러는 디스크 파일이 전혀없고 이름 만 <stddef.h>특별히 취급 하지만 GCC와 Clang을 사용하면 디스크 파일을 얻을 수 있습니다.

locate명령 을 사용하여 시스템의 모든 사본을 찾을 수 있습니다 .

특정 옵션이 주어 졌을 때 GCC가 사용하는 포함 경로 를 알고 싶다면 -v빌드에서 사용하는 다른 옵션 (특히 -m) 외에 명령 줄에서 옵션 전달합니다 .

아무것도 컴파일하지 않고이 정보를 원하면 빈 입력 을 사용하여 전 처리기 전용 모드에서 GCC를 호출합니다 ( -xc -E /dev/null; -xc파일 이름없이 컴파일하는 언어를 GCC에서 알 수 없기 때문에 언어를 c로 지정 하려면 a 필요합니다 ).

그런데 Clang에서도 동일한 옵션이 작동합니다.

gcc -v -xc -E /dev/null 2>&1 |
awk ' /^End of search list/ {exit} p {print} /^#include <\.\.\.> search starts here:/ {p=1}' |
xargs sh -c 'for x; do if [ -e "$x/stddef.h" ]; then echo "$x/stddef.h"; exit; fi; done' sh

알고 싶은 것이의 정의 size_t뿐이라면 그것이 어디에서 오는지 알 필요가 없습니다. 컴파일러에게 전 처리기의 출력을 인쇄하도록 요청하십시오.

echo '#include <stddef.h>' | gcc -xc -E - | grep size_t

부터 man gcc,

  • -E전처리 단계 후에 중지하십시오. 컴파일러를 올바르게 실행하지 마십시오. 출력은 표준 출력으로 전송되는 전처리 된 소스 코드의 형태입니다. 전처리가 필요하지 않은 입력 파일은 무시됩니다.
  • -x language컴파일러가 파일 이름 접미사에 따라 기본값을 선택하도록하는 대신 다음 입력 파일의 언어를 명시 적으로 지정합니다. 이 옵션은 다음 -x옵션 까지 모든 다음 입력 파일에 적용됩니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

POSIX에서 $ _는 어디에 정의되어 있습니까?

Linux에서 PATH_MAX는 어디에 정의되어 있습니까?

_data []는 magento의 어디에 정의되어 있습니까?

PYTHONPATH는 처음에 어디에 정의되어 있습니까?

Linux에서 bluetooth / bluetooth.h는 어디에 있습니까?

${datestamp}는 어디에 정의되어 있습니까?

이 json 멤버는 어디에 정의되어 있습니까?

contains (Junction)는 어디에 정의되어 있습니까?

Enum.values ()는 어디에 정의되어 있습니까?

@ drawable / new_logo는 어디에 정의되어 있습니까?

Request 클래스는 어디에 정의되어 있습니까?

`Malformed 및`Uchar는 어디에 정의되어 있습니까?

오류 코드는 어디에 정의되어 있습니까?

BILLING_RESULT_OK는 어디에 정의되어 있습니까?

Ada-Verbosity_Desired는 어디에 정의되어 있습니까?

'err_quit'는 어디에 정의되어 있습니까?

CONFIG_HZ는 어디에 정의되어 있습니까?

printf는 어디에 정의되어 있습니까?

rails config / environments 'config'는 어디에 정의되어 있습니까?

size_t는 어디에 정의되어 있습니까?

제약 종류는 어디에 정의되어 있습니까?

WindowsSDK_IncludePath는 어디에 정의되어 있습니까?

endl 조작자는 어디에 정의되어 있습니까?

attr_accessor는 어디에 정의되어 있습니까?

supportFragmentManager 변수는 어디에 정의되어 있습니까?

"this.props"는 어디에 정의되어 있습니까?

`exit`는 어디에 정의되어 있습니까?

'링크'는 어디에 정의되어 있습니까?

Java 연산자 "+"는 어디에 정의되어 있습니까?

TOP 리스트

  1. 1

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  2. 2

    std :: regex의 일관성없는 동작

  3. 3

    JSoup javax.net.ssl.SSLHandshakeException : <url>과 일치하는 주체 대체 DNS 이름이 없습니다.

  4. 4

    PrematureCloseException : 연결이 너무 일찍 닫혔습니다.

  5. 5

    Xcode10 유효성 검사 : 이미지에 투명성이 없지만 여전히 수락되지 않습니까?

  6. 6

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  7. 7

    Ionic 2 로더가 적시에 표시되지 않음

  8. 8

    Seaborn에서 축 제목 숨기기

  9. 9

    C #에서 'System.DBNull'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.

  10. 10

    복사 / 붙여 넣기 비활성화

  11. 11

    ArrayBufferLike의 typescript 정의의 깊은 의미

  12. 12

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  13. 13

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

  14. 14

    jfreecharts에서 x 및 y 축 선을 조정하는 방법

  15. 15

    PRNG 기간보다 순열이 더 많은 목록을 무작위로 섞는 방법은 무엇입니까?

  16. 16

    C # HttpWebRequest 기본 연결이 닫혔습니다. 전송시 예기치 않은 오류가 발생했습니다.

  17. 17

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  18. 18

    잘못된 구성 개체입니다. Webpack이 Angular의 API 스키마와 일치하지 않는 구성 개체를 사용하여 초기화되었습니다.

  19. 19

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  20. 20

    R의 마침표와 숫자 사이에 문자열 삽입

  21. 21

    Assets의 BitmapFactory.decodeStream이 Android 7에서 null을 반환합니다.

뜨겁다태그

보관