반응형

C 40

Linux 프레임 버퍼를 통해 화면에 픽셀 그리기

Linux 프레임 버퍼를 통해 화면에 픽셀 그리기 저는 최근에 /dev/urandom에서 입력을 가져와서 관련 문자를 임의의 정수로 변환하고 이러한 정수를 화면에 그릴 픽셀의 rgb/x-y 값으로 사용하는 흥미로운 아이디어에 놀랐습니다. (StackOverflow 등에 대해) 몇 가지 조사를 해 보았는데, /dev/fb0이 장치의 파일 표현이므로 직접 /dev/fb0에 쓸 수 있다고 제안하는 경우가 많습니다.불행하게도, 이것은 시각적으로 명백한 결과를 만들어내지 못하는 것처럼 보입니다. 저는 버퍼에 쓰기 위해 mmap을 사용하는 QT 튜토리얼(더 이상 사용할 수 없음)에서 샘플 C 프로그램을 찾았습니다.프로그램이 성공적으로 실행되지만 화면으로 출력되지 않습니다.흥미롭게도 랩톱을 일시 중단 상태로 두었다가..

programing 2023.07.14

64비트 Linux OS에서 32비트용 컴파일 프로그램으로 인해 치명적인 오류가 발생함

64비트 Linux OS에서 32비트용 컴파일 프로그램으로 인해 치명적인 오류가 발생함 사용. gcc -m32 myprog.c 32비트 버전으로 파일을 컴파일해야 합니다.myprog.c. 유감스럽게도 다음 오류가 발생했습니다. In file included from /usr/include/stdio.h:27:0, from myprog.c:1: /usr/include/features.h:374:25: fatal error: sys/cdefs.h: No such file or directory #include 제가 이걸 어떻게 고칠 수 있을까요? 사용하지 않을 경우-m32작동하지만 64비트 명령어를 사용합니다.64비트 Linux 버전에서 32비트 이진 파일을 컴파일하려면 설치해야 합니다.libx32gcc개발..

programing 2023.07.09

64비트에서 32비트 부호 없는 곱셈이 정의되지 않은 동작을 유발합니까?

64비트에서 32비트 부호 없는 곱셈이 정의되지 않은 동작을 유발합니까? 그래서 나는 이 코드를 가지고 있습니다: uint32_t s1 = 0xFFFFFFFFU; uint32_t s2 = 0xFFFFFFFFU; uint32_t v; ... v = s1 * s2; /* Only need the low 32 bits of the result */ 다음 모든 사항에서 컴파일러는 다음 범위에 대한 선입견을 가질 수 없었습니다.s1또는s2위의 예에 해당하는 이니셜라이저. 만약 내가 이것을 32비트의 정수 크기를 가진 컴파일러에서 컴파일했다면 (예를 들어 x86을 컴파일할 때) 문제가 없습니다.컴파일러는 단순히 다음을 사용합니다.s1그리고.s2~하듯이uint32_t입력된 값(더 이상 승격할 수 없음), 곱셈은 단순..

programing 2023.06.29

64비트 애플리케이션의 메모리 사용량 오버헤드는 얼마입니까?

64비트 애플리케이션의 메모리 사용량 오버헤드는 얼마입니까? 제가 지금까지 알아낸 바로는 64비트 아키텍처용으로 컴파일된 프로그램이 32비트 대체 프로그램인 https://superuser.com/questions/56540/32-bit-vs-64-bit-systems 보다 포인터에 두 배 더 많은 RAM을 사용한다는 것이 분명합니다. 64비트용으로 컴파일된 코드가 32비트 버전보다 평균 2배 더 많은 RAM을 사용한다는 뜻입니까? 어쩐지 의심스럽지만, 진짜 간접비가 무엇인지 궁금합니다.저는 생작타은은입들들예, 면를엔각내와 같은 유형들이 합니다.short,byte그리고.char64비트 아키텍처에서 크기가 같습니까?는 잘 모르겠어요.byte그도래. 프로그램들이 큰 브라우저하면, 이 이웹저등브과같우라은큰작때..

programing 2023.06.24

벡터화는 무엇을 의미합니까?

벡터화는 무엇을 의미합니까? 코드를 벡터화하는 것이 좋은 생각입니까?언제 그것을 해야 하는지에 대한 좋은 관행은 무엇입니까?밑에 무슨 일이 일어날까요?벡터화는 컴파일러가 사용자의 독립적인 명령어가 하나의 SIMD 명령어로 실행될 수 있음을 감지함을 의미합니다.일반적인 예는 만약 당신이 무언가를 한다면. for (i = 0; i < N; i++) { a[i] = a[i] + b[i]; } (벡터 표기법을 사용하여) 다음과 같이 벡터화됩니다. for (i = 0; i < (N - N % VF); i += VF) { a[i : i + VF] = a[i : i + VF] + b[i : i + VF]; } 기본적으로 컴파일러는 어레이의 VF 요소에서 동시에 수행할 수 있는 작업을 하나 선택하고 단일 작업을 N번 ..

programing 2023.06.24

C와 C++ 옵티마이저는 일반적으로 어떤 함수가 부작용이 없는지 알고 있습니까?

C와 C++ 옵티마이저는 일반적으로 어떤 함수가 부작용이 없는지 알고 있습니까? sin, cos 등과 같은 매우 일반적인 수학 함수를 예로 들 수 있습니다.컴파일러는 부작용이 없고 외부 루프로 이동할 수 있다는 것을 알고 있습니까?예를들면 // Unoptimized double YSinX(double x,int y) { double total = 0.0; for (int i = 0; i < y; i++) total += sin(x); return total; } // Manually optimized double YSinX(double x,int y) { double total = 0.0, sinx = sin(x); for (int i = 0; i < y; i++) total += sinx; return..

programing 2023.06.14

C에서 EOF와 '\0'의 값은 무엇입니까?

C에서 EOF와 '\0'의 값은 무엇입니까? 나는 그것을 알고 있습니다.EOF그리고.'\0'정수형이지만, 그렇다면 고정된 값을 가져야 하지 않을까요? 는 둘 다 을 받았습니다.EOF0의 합니다.'\0'하지만 이 값들은 고정되어 있습니까? 나도 이것을 가지고 있었습니다. int a=-1; printf("%d",a==EOF); //printed 1 값은 다음과 같습니까?EOF그리고.'\0'고정 정수? EOF는 정수 로, 형식은 다음과 같습니다.int그리고 구현 종속 음수 값이지만 매우 일반적으로 -1입니다. '\0'입니다.char이고 C++의 값이 0인 경우intC의 값이 0인 경우. 이유printf("%d",a==EOF);결과적으로1값을 할당하지 않았기 때문입니다.EOFa대신에 당신은 확인했습니다.a과 E..

programing 2023.06.14

매개 변수 동작이 없는 C 함수

매개 변수 동작이 없는 C 함수 누가 다음 코드가 경고나 오류 없이 컴파일되는 이유를 설명해 줄 수 있습니까? 나는 컴파일러가 그 함수가 나에게 경고하기를 기대합니다.no_args인수를 기대하지 않습니다. 하지만 코드는 기능을 컴파일하고 실행합니다.no_args재귀적으로 static void has_args(int a, int b, int c) { printf("has_args\n"); } static void no_args() { printf("no_args\n"); no_args(1, 2, 3); } void main() { no_args(); } C++에서,void no_args()매개 변수를 사용하지 않고 아무것도 반환하지 않는 함수를 선언합니다. 주식회사,void no_args()지정되지 않은(..

programing 2023.06.09

임베디드 프로젝트용 C/C++ HTTP 클라이언트 라이브러리

임베디드 프로젝트용 C/C++ HTTP 클라이언트 라이브러리 마감되었습니다. 이 질문은 책, 도구, 소프트웨어 라이브러리 등에 대한 추천을 구하는 것입니다.충족되지 않습니다.스택 오버플로 지침입니다.현재 답변을 수락하고 있지 않습니다. 책, 도구, 소프트웨어 라이브러리 등에 대한 추천을 구하는 질문은 허용되지 않습니다.질문에 사실과 인용문으로 답변할 수 있도록 질문을 편집할 수 있습니다. 8년 전에 문을 닫았습니다. 커뮤니티는 작년에 이 질문을 다시 시작할지 여부를 검토한 후 이 질문을 닫았습니다. 원래 종료 이유가 해결되지 않았습니다. 이 질문을 개선합니다. 그래서 저는 StackOverflow와 Google에서 검색 결과 페이지와 페이지를 살펴보았고 리소스가 제한된 임베디드 환경(예: ARM)에 적합..

programing 2023.06.09

strtol의 올바른 사용

strtol의 올바른 사용 아래 프로그램은 문자열을 long으로 변환하지만, 제가 이해한 바로는 오류도 반환합니다.저는 만약에strtol한 후 두 를 long으로 변환하였습니다.strtolNULL과 같아야 합니다.아래 앱을 55로 실행하면 다음과 같은 메시지가 나타납니다. ./convertToLong 55 Could not convert 55 to long and leftover string is: 55 as long is 55 오를성공탐방법에서 오류를 하려면 어떻게 ?strtol내 애플리케이션에서 0은 유효한 값입니다. 코드: #include #include static long parseLong(const char * str); int main(int argc, char ** argv) { print..

programing 2023.06.09
반응형