반응형

C 117

C++ - unistd를 포함합니다.왜 cunistd 안 돼?

C++ - unistd를 포함합니다.왜 cunistd 안 돼? C++에 C 헤더 파일을 포함할 때는 ".h" 서픽스를 제거한 후 처음에 "c"를 추가해야 한다고 합니다.예를들면,#include 대신#include 하지만 사용할 때는sleep()내 코드에 따르면#include 동작하지 않습니다만,#include 효과가 있습니다.왜 안 돼요??알고리즘은 대부분의 표준 C 헤더에 대해 올바릅니다만,unistd.h표준 C의 일부가 아니기 때문에 표준 C++는 다른 C++에 포함되지 않습니다.c...머리글을 클릭합니다.왜냐면unistd.hC언어에 속하지 않았습니다.OS의 일부입니다.는 unix standard header의 약자로, 이름이 모든 것을 나타냅니다.unistd.h는 표준 C의 일부가 아닙니다.표준 C..

sourcecode 2022.07.23

C에 왼쪽이 없을 때 & 오퍼레이터는 어떻게 해야 합니까?

C에 왼쪽이 없을 때 & 오퍼레이터는 어떻게 해야 합니까? C에서 다음과 같은 코드를 가진 프로그램을 보았습니다. static void *arr[1] = {&& varOne,&& varTwo,&& varThree}; varOne: printf("One") ; varTwo: printf("Two") ; varThree: printf("Three") ; 뭐가 뭔지 헷갈려구요&&왼쪽에는 아무것도 없기 때문입니다.디폴트로는 늘로 평가됩니까?아니면 이게 특별한 경우인가요? 편집: 질문/코드를 보다 명확하게 하기 위해 몇 가지 정보를 추가했습니다.도와주셔서 감사합니다.이것은 gcc 고유의 확장의 경우입니다.이것은 "값으로서의 라벨"로 알려진 gcc 확장입니다.gcc 매뉴얼 링크 이 확장자에서는&&는 라벨에 적용할 ..

sourcecode 2022.07.23

Linux에서 비동기 신호 핸들러는 어떻게 실행됩니까?

Linux에서 비동기 신호 핸들러는 어떻게 실행됩니까? Linux에서 비동기 신호 핸들러의 실행이 정확히 어떻게 작동하는지 알고 싶습니다.첫째, 어떤 스레드가 신호 핸들러를 실행하는지 불분명합니다.둘째, 스레드에서 신호 핸들러를 실행하기 위한 절차를 알고 싶습니다. 첫 번째 문제에 대해, 나는 상반된 것처럼 보이는 두 가지 다른 설명을 읽었다. Linux Kernel by Andries Broouber, § 5.2 "Receiving signals"에는 다음과 같이 기술되어 있습니다. 신호가 도착하면 프로세스가 중단되고 현재 레지스터가 저장되며 신호 핸들러가 호출됩니다.신호 핸들러가 돌아오면 중단된 액티비티가 계속됩니다. StackOverflow 질문 "멀티 스레드 프로그램에서의 비동기 신호 처리"는 L..

sourcecode 2022.07.23

math.h 헤더를 포함했는데도 "undefined reference to sqrt" 오류가 발생하는 이유는 무엇입니까?

math.h 헤더를 포함했는데도 "undefined reference to sqrt" 오류가 발생하는 이유는 무엇입니까? 이 질문에는 이미 답변이 있습니다. sqrt(또는 다른 수학 함수)에 대한 참조가 정의되지 않았습니다. (5개의 답변) 닫힘3년 전. C는 처음이고 코드는 다음과 같습니다. #include #include int main(void) { double x = 0.5; double result = sqrt(x); printf("The square root of %lf is %lf\n", x, result); return 0; } 하지만 이것을 컴파일 할 때: gcc test.c -o test 다음과 같은 오류가 발생합니다. /tmp/cc58XvyX.o: In function `main': ..

sourcecode 2022.07.23

특정 gcc 컴파일러의 glibc 버전을 확인합니다.

특정 gcc 컴파일러의 glibc 버전을 확인합니다. 시스템에 2개의 gcc 컴파일러가 설치되어 있습니다.하나는gcc 4.1.2(디폴트)와 다른 하나는gcc 4.4.4에서 사용되는 libc 버전을 확인하려면 어떻게 해야 합니까?gcc 4.4.4,왜냐면/lib/libc.so.6에 의해 사용되는 glibc를 나타냅니다.gcc 4.1.2디폴트 컴파일러이기 때문입니다.테스트 프로그램 작성(예를 들어 이름 지정)glibc-version.c): #include #include #include int main(int argc, char *argv[]) { printf("GNU libc version: %s\n", gnu_get_libc_version()); exit(EXIT_SUCCESS); } gcc-4.4 컴파일..

sourcecode 2022.07.17

"2i;"라는 문장이 컴파일러 오류를 일으키지 않는 이유는 무엇입니까?

"2i;"라는 문장이 컴파일러 오류를 일으키지 않는 이유는 무엇입니까? 대신2*i무심코 썼다.2i: int foo(int i) { 2i; return 2i; } 컴파일러가 오류를 검출할 것으로 예상했습니다.하지만 그렇지 않았다.역시 그렇다2iC로 된 유효한 진술서?그렇다면 어떤 역할을 합니까?당황! gcc 버전 5.3.0을 사용하여 컴파일한 결과 어셈블리 출력은 다음과 같습니다. .file "strange.c" .text .globl foo .type foo, @function foo: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 movl %ed..

sourcecode 2022.07.17
반응형