반응형

C 17

'gcc-O2'에서 무한 루프에 최적화된 기능

'gcc-O2'에서 무한 루프에 최적화된 기능 저는 제 친구 중 한 명으로부터 다음과 같은 퍼즐을 물었습니다. void fn(void) { /* write something after this comment so that the program output is 10 */ /* write something before this comment */ } int main() { int i = 5; fn(); printf("%d\n", i); return 0; } 저는 여러 가지 해결책이 있을 수 있다는 것을 알고 있습니다. 일부는 매크로를 포함하고 일부는 구현과 C를 위반하는 것에 대해 가정합니다. 제가 관심을 가졌던 한 가지 특별한 해결책은 스택 및 쓰기 코드에 대한 특정 가정을 하는 것입니다. (정의되지 않..

programing 2023.08.29

fork() 뒤에 있는 'file descriptor'에 대한 간단한 설명 찾기

fork() 뒤에 있는 'file descriptor'에 대한 간단한 설명 찾기 "유닉스 환경에서의 고급 프로그래밍"에서, 두 번째 판, By W. Richard Stevens.섹션 8.3 포크 기능. 설명은 다음과 같습니다. 부모와 자식이 동일한 파일 오프셋을 공유하는 것이 중요합니다. 자식에게 포크를 씌운 다음 자식이 완료될 때까지 기다리는 프로세스를 고려합니다.두 공정 모두 정상 처리의 일부로 표준 출력에 쓴다고 가정합니다.부모의 표준 출력이 셸에 의해 리디렉션된 경우 자녀가 표준 출력에 쓸 때 부모의 파일 오프셋을 자식이 업데이트해야 합니다. 내 답변: {1} 부모의 std 출력이 예를 들어 'file1'로 리디렉션되는 경우 자식이 쓴 후 무엇을 업데이트해야 합니까?부모의 원래 표준 출력 오프셋 ..

programing 2023.08.14

단일 C 파일의 FFT

단일 C 파일의 FFT 닫힘.이 질문은 책, 도구, 소프트웨어 라이브러리 등에 대한 권장 사항을 찾는 것입니다.충족되지 않습니다.스택 오버플로 지침입니다.현재 답변을 수락하고 있지 않습니다. 책, 도구, 소프트웨어 라이브러리 등에 대한 추천을 구하는 질문은 허용되지 않습니다.질문에 사실과 인용문으로 답변할 수 있도록 질문을 편집할 수 있습니다. 6년 전에 문을 닫았습니다. 이 질문을 개선합니다. 저는 C에서 FFT 구현을 찾고 있었습니다.그러나 FFTW와 같은 거대한 라이브러리가 아니라 사용하기 쉬운 단일 C-파일 구현을 찾고 있습니다.불행히도 저는 이런 것을 찾을 수 없었습니다. 누가 간단한 구현을 추천해 줄 수 있습니까?가장 좋은 방법은 KissFFT입니다. 이름에서 알 수 있듯이 KissFFT는 간..

programing 2023.08.09

'엔트리' 키워드는 어떻게 되었습니까?

'엔트리' 키워드는 어떻게 되었습니까? 얼마 전 화이트북을 순항하던 중 C 키워드 목록에서 발견했습니다.항목은 해당 목록의 키워드 중 하나입니다. 나중에 사용할 수 있도록 예약되어 있습니다.포트란 시절을 돌이켜보면, 어떤 종류의 기능이 있었는데, 그 기능은 엔트리 스테이트먼트를 사용하여 두 번째 인수 서명을 만들거나 함수의 엔트리 포인트를 만드는 것이었습니다. 이것이 원래 엔트리를 사용하기 위한 목적입니까?아니면 완전히 다른 것? 엔트리 키워드의 내용은 무엇입니까?저는 전혀 몰랐기 때문에, 이것에 대해 뭔가를 찾으려고 구글을 검색했습니다.이것이 제가 찾은 것입니다. 먼저 예약된 키워드로 포함되었습니다. Q: K&R1에서 언급된 엔트리 키워드는 무엇입니까? A: 여러 개의 다른 이름의 진입점을 가진 기능을..

programing 2023.08.04

이름이나 유형에 특정 언어 연결이 있다는 것은 무엇을 의미합니까?

이름이나 유형에 특정 언어 연결이 있다는 것은 무엇을 의미합니까? (c) ANSI ISO/IEC 14882:2003에 따라 127페이지: 링크 사양이 중첩됩니다.링크 사양이 중첩될 때 가장 안쪽에 있는 것이 언어를 결정합니다.링크 사양은 범위를 설정하지 않습니다.연결 사양은 네임스페이스 범위(3.3)에서만 발생해야 합니다.연결 규격에서 지정된 언어 연결은 선언에 의해 도입된 모든 함수 선언자, 함수 이름 및 변수 이름의 함수 유형에 적용됩니다. extern "C" void f1(void(*pf)(int)); // the name f1 and its function type have C language // linkage; pf is a pointer to a C function extern "C" typ..

programing 2023.07.30

파일로 리디렉션될 때 stdout에 명시적 플러시가 필요한 이유는 무엇입니까?

파일로 리디렉션될 때 stdout에 명시적 플러시가 필요한 이유는 무엇입니까? printf()의 위치에 따라 달라지는 것 같습니다.stdout. 한다면stdout콘솔로 전송됩니다.printf()줄 바꿈으로 표시되며 새 줄이 인쇄된 후 플러시됩니다. 한다면stdout, 는 ""가 아닌 한 않습니다.fflush()이 호출됩니다. 만약 게가면, 약에만.printf() 앞에 됩니다.stdout는 파일로 리디렉션되고, 후속 쓰기(파일에 대한)는 줄 바꿈 처리되며, 줄 바꿈 후 플러시됩니다. 는 언제입니까?stdout줄 바꿈 및 , 그고언제리buff▁line언▁does제 그리고-.fflush()호출해야 합니까? 각 항목의 최소 예: void RedirectStdout2File(const char* log_path)..

programing 2023.07.30

사이톤의 복소수

사이톤의 복소수 사이톤에서 복잡한 숫자로 작업하는 올바른 방법은 무엇입니까? npdtype np.complex128numpy.nd의 한 C 를 작성하고 .은 Cython 서관된다같은정다니의됩이에과음연형유▁cy▁in▁in다로 됩니다.Cython/Includes/numpy/__init__.pxd~하듯이 ctypedef double complex complex128_t 그래서 이것은 단순한 C 이중 복합체인 것처럼 보입니다. 하지만, 이상한 행동을 하는 것은 쉽습니다.특히, 이러한 정의를 사용하여 cimport numpy as np import numpy as np np.import_array() cdef extern from "complex.h": pass cdef: np.complex128_t varc12..

programing 2023.07.20

크기의 내부 메커니즘(단위: C?

크기의 내부 메커니즘(단위: C? 저는 C에서 구조물의 크기를 얻기 위해 size를 사용하지만, 제가 받은 결과는 예상치 못한 것입니다. struct sdshdr { int len; int free; char buf[]; }; int main(){ printf("struct len:%d\n",(sizeof(struct sdshdr))); return 0; } //struct len:8, with or without buf 제 질문은 왜 그러냐는 것입니다.buf어떤 공간도 차지하지 않고 왜 크기가int64비트 CPU에 still 4를 입력하시겠습니까? 다음은 에서 나온 출력입니다.gcc -v: Configured with: --prefix=/Applications/Xcode.app/Contents/Deve..

programing 2023.07.15

리눅스에서 스레드 이름을 지정하는 방법은 무엇입니까?

리눅스에서 스레드 이름을 지정하는 방법은 무엇입니까? 이 질문에는 이미 다음과 같은 답이 있습니다. 리눅스 pthreads에서 스레드 이름을 설정하는 방법은 무엇입니까? (3개 답변) 마감됨6년 전에. C/C++로 작성된 멀티스레드 리눅스 애플리케이션이 있습니다.스레드 이름을 선택했습니다.디버깅을 돕기 위해 GDB, "top" 등에 이러한 이름이 표시되기를 원합니다.이것이 가능하며, 그렇다면 어떻게 가능합니까? (스레드 이름을 알아야 하는 이유는 많습니다.지금 당장은 어떤 스레드가 CPU의 50%를 차지하는지 알고 싶습니다('top'에서 보고됨).디버깅할 때는 종종 다른 스레드로 전환해야 합니다. 현재는 "해야 합니다."thread apply all bt그런 다음 백트레이스 출력 페이지를 검토하여 올바른..

programing 2023.07.10

왜 GCC는 C보다 C++에 대해 isnan()을 더 효율적으로 구현합니까?

왜 GCC는 C보다 C++에 대해 isnan()을 더 효율적으로 구현합니까? 내 코드는 다음과 같습니다. int f(double x) { return isnan(x); } 내가 만약에#include 나는 이 어셈블리를 받습니다. xorl %eax, %eax ucomisd %xmm0, %xmm0 setp %al 이것은 상당히 영리합니다. ucomisd는 x와 자체의 비교가 순서가 없는 경우 패리티 플래그를 설정합니다. 즉, x는 NAN입니다.그런 다음 setp는 패리티 플래그를 결과로 복사합니다(단일 바이트만, 따라서 초기 지우기).%eax). 하지만 내가#include 나는 이 어셈블리를 받습니다. jmp __isnan 이제 코드는 인라인이 아니며,__isnan기능은 확실히 더 빠르지 않습니다.ucomi..

programing 2023.07.05
반응형