반응형

C 49

2바이트를 부호 있는 16비트 정수로 변환하는 올바른 방법은 무엇입니까?

2바이트를 부호 있는 16비트 정수로 변환하는 올바른 방법은 무엇입니까? 이 답변에서 즈월은 다음과 같이 주장했습니다. 외부 소스에서 2바이트의 데이터를 16비트 부호 정수로 변환하는 올바른 방법은 다음과 같은 도우미 기능을 사용하는 것입니다. #include int16_t be16_to_cpu_signed(const uint8_t data[static 2]) { uint32_t val = (((uint32_t)data[0])

source 2023.10.14

두 번째 인수가 메인()인 char *argv[]와 char **argv의 차이

두 번째 인수가 메인()인 char *argv[]와 char **argv의 차이 이 질문에는 이미 다음과 같은 답변이 있습니다. *[] 와 ** 사이의 C 차이 (8개 답변) 닫힘3년 전에. 코드 1 #include int main(int argc, char *argv[]) { int j; printf("%d", argv[1][0]); return 0; } CODE 2 #include int main(int argc, char **argv) { int j; printf("%d", argv[1][0]); return 0; } CODE 1과 CODE 2는 모두 동일한 출력을 제공합니다.그러나 CODE 1과 CODE 2의 주함수의 논항 2는 다릅니다.포인터 배열은 컴파일 시 데이터 섹션 위에 작성됩니다.arg..

source 2023.10.14

gcc는 수학을 제대로 포함하지 않습니다.h

gcc는 수학을 제대로 포함하지 않습니다.h 여기 내 문제를 설명하는 최소한의 예가 있습니다. test.c: #include #include main () { fmod ( 3, 2 ); } 여기에 내가 정리하기 위해 내리는 명령어가 있습니다.test.c gcc -lm test.c -o test 그리고 여기 위 명령을 내릴 때 나오는 출력이 있습니다. /tmp/ccQmRk99.o: In function `main': test.c:(.text+0x3e): undefined reference to `fmod' collect2: ld returned 1 exit status 대신 사용하면 동일한 출력이 나옵니다.cc. 저는 다음 버전의 gcc를 사용하고 있습니다. gcc-4.6.real (Ubuntu/Linar..

source 2023.10.14

C/C++ 효율적 비트 배열

C/C++ 효율적 비트 배열 임의 길이 비트 배열을 조작하는 효율적/깨끗한 방법을 추천해 주시겠습니까? 현재 일반 int/char 비트 마스크를 사용하고 있지만 배열 길이가 데이터 유형 길이보다 클 경우에는 그다지 깨끗하지 않습니다. std vector저는 이용할 수 없습니다.만 아니라 C++도C++와 같은 은 C+++ 까지하셨으니 C++ C++ 하겠습니다를 한다고 boost::dynamic_bitset해당되지 않을 수도 있습니다. 대신 낮은 수준의 C 구현에 대해 이야기하십시오.로 ,boost::dynamic_bitset당신에게 적합하거나, 당신이 찾을 수 있는 기존의 C 라이브러리가 있다면, 그것들을 사용하는 것이 당신의 것을 굴리는 것보다 더 나을 수 있습니다. 경고:다음 코드 중 테스트되거나 컴파..

source 2023.10.14

이것이 의미하는 바는 무엇일까요? 무효가 되는 포인터는 다른 포인터와 결코 동일하지 않을 것입니다.

이것이 의미하는 바는 무엇일까요? 무효가 되는 포인터는 다른 포인터와 결코 동일하지 않을 것입니다. 제 친구 중 한 명이 "C Pointers의 이해와 사용 - Richard Reese, O'Reilly publications"에서 두 번째 총알 포인트를 지적했는데, 저는 그 첫 번째 문장을 설명할 수 없었습니다.제가 무엇을 빠뜨리고 있나요? 빈 곳으로 포인터 공백 포인터는 모든 데이터 유형에 대한 참조를 유지하는 데 사용되는 범용 포인터입니다.아래에는 무효 포인터의 예가 나와 있습니다. void *pv; 두 가지 흥미로운 속성을 가지고 있습니다. 는 void 에로의 한 표현과 을 갖습니다.char. void의 포인터는 다른 포인터와 결코 동일하지 않습니다.하지만, 두 개의 보이드 포인터가 A를 할당했습..

source 2023.10.14

x86에서 SHA(SHA1/2/256/512) 인코딩을 가속화하기 위한 지침이 있습니까?

x86에서 SHA(SHA1/2/256/512) 인코딩을 가속화하기 위한 지침이 있습니까? 예를 들어, x86의 명령어 Set to hardware acceleration AES가 있습니다.그러나 x86에서 SHA(SHA1/2/256/512) 인코딩을 가속화하기 위한 지침이 있으며 x86에서 SHA를 인코딩하기 위한 가장 빠른 라이브러리는 무엇입니까?Intel은 SHA1/256 해시 계산을 가속화하기 위한 지침을 곧 제공합니다. 여기에서는 CPU가 이를 지원하는지 감지하는 방법과 사용 방법에 대한 자세한 내용을 볼 수 있습니다. (그러나 SHA-512가 아니라 일반 SIMD 명령을 사용하여 수동으로 벡터화해야 합니다.AVX512는 SHA-512(그리고 SHA 확장이 아닌 AVX512가 있는 CPU의 SHA..

source 2023.10.09

랜덤 DAG 생성

랜덤 DAG 생성 나는 지시 비순환 그래프에 대한 문제를 해결하고 있습니다. 하지만 몇몇 지시된 비순환 그래프에서 코드를 테스트하는 데 어려움을 겪고 있습니다.검정 그래프는 크고 비순환적이어야 합니다. 저는 비순환 방향 그래프를 생성하기 위한 코드를 작성하기 위해 많은 노력을 했습니다.하지만 매번 실패했습니다. 사용할 수 있는 순환 방향 그래프를 생성하는 기존 방법이 있습니까?이것을 하는 C 프로그램을 만들었습니다.핵심은 노드를 '순위'를 매기고, 낮은 순위의 노드에서 높은 순위의 노드로 에지만 그리는 것입니다. 제가 작성한 프로그램은 DOT 언어로 인쇄됩니다. 다음은 코드 자체이며, 코드의 의미를 설명하는 코멘트는 다음과 같습니다. #include #include #include #define MIN_..

source 2023.10.09

Linux의 C 프로그램에서 FS가 없는 하드 디스크에 직접 액세스

Linux의 C 프로그램에서 FS가 없는 하드 디스크에 직접 액세스 나는 C 프로그램에서 하드디스크 전체를 직접 접속하고 싶습니다.FS는 없고 FS는 절대 없을 겁니다 /dev/sda(예:)를 열고 디스크의 블록/섹터 수준에서 I/O를 수행하고자 합니다. 저는 리눅스 환경(C언어, 파이썬, 펄, 자바를 알고 있습니다)에서 C 프로그래밍을 배우기 위한 프로그램을 작성할 계획이지만 리눅스 환경에 대한 자신감이 부족합니다. 학습 목적으로 교토 캐비닛을 가지고 놀고 계산된 해시에 해당하는 값을 하드 디스크의 "블록/섹터"에 직접 저장하여 쌍을 기록하려고 합니다.교토-hash 해시 데이터베이스 파일에 "cabinet, 블록/섹터 참조". 표준 CI/O 기능을 사용하여 이것이 가능한지 아니면 "디바이스 드라이버" ..

source 2023.10.09

Linux에서 Ctrl + C 인터럽트 이벤트 처리

Linux에서 Ctrl + C 인터럽트 이벤트 처리 저는 C++를 사용하고 리눅스 GNU C 컴파일러를 사용하여 컴파일하는 어플리케이션을 개발하고 있습니다. 사용자가 +키를 사용하여 스크립트를 인터럽트하는 기능을 실행하고 싶습니다. 어떻게 해야 하나?어떤 답변이든 감사히 받겠습니다.를 누르면 운영 체제가 프로세스로 신호를 보냅니다.여러 가지 신호가 있는데 그 중 하나가 SIGINT입니다.SIGINT("프로그램 인터럽트")는 터미네이션 신호 중 하나입니다. Termination Signal에는 몇 가지 종류가 더 있지만 SIGINT의 흥미로운 점은 프로그램에서 처리(잡힐)할 수 있다는 것입니다.SIGINT의 기본 동작은 프로그램 종료입니다.즉, 프로그램에서 이 신호를 특별히 처리하지 않는 경우 프로그램을 ..

source 2023.10.09
반응형