반응형

C 78

시스템 호출 대 함수 호출

시스템 호출 대 함수 호출 시스템 호출과 함수 호출의 차이점은 무엇입니까?fopen()은 시스템 호출입니까, 아니면 함수 호출입니까?시스템 호출은 일반적으로 인터럽트를 실행하여 수행되는 커널 코드에 대한 호출입니다.인터럽트로 인해 커널이 요청된 작업을 인계하고 수행한 다음 제어 권한을 응용 프로그램에 다시 넘겨줍니다.이러한 모드 전환은 시스템 호출 실행이 동등한 애플리케이션 수준 기능보다 느린 이유입니다. fopen는 내부적으로 하나 이상의 시스템 호출을 수행하는 C 라이브러리의 함수입니다.일반적으로 C 프로그래머인 당신은 C 라이브러리가 당신을 위해 시스템 호출을 랩하기 때문에 거의 사용할 필요가 없습니다.fopen은 함수 호출입니다. 시스템 호출은 리소스를 관리하는 기본 OS와 상호 작용합니다.시스템..

itsource 2023.07.26

Linux 입력 장치에서 키 액세스

Linux 입력 장치에서 키 액세스 내가 하려는 일 그래서 저는 리눅스에서 키보드 입력에 접근하려고 노력해왔습니다.특히 다른 키를 누르지 않고 수식어 키 누르기에 액세스할 수 있어야 합니다.또한 X 시스템을 실행하지 않고도 이 작업을 수행할 수 있기를 원합니다. 간단히 말해서, 제 요구 사항은 다음과 같습니다. Linux에서 작동합니다. X11이 필요하지 않음 다른 키를 누르지 않고 수식자 키 누르기를 검색할 수 있습니다. 여기에는 다음 키가 포함됩니다. 시프트 통제 알트 간한것있됩니다면으만단▁a됩▁i다니▁all▁simple▁is▁need면만 있으면 됩니다.0 = not pressed,1 = currently pressed키보드를 선택했을 때 키가 눌려 있는지 여부를 알려주는 것 내 컴퓨터 설정 제 일반..

itsource 2023.07.26

가장 간단한 RGB 이미지 형식은 무엇입니까?

가장 간단한 RGB 이미지 형식은 무엇입니까? 저는 C에서 물리학 실험과 영의 간섭 실험을 하고 있고, 저는 다음과 같이 인쇄하는 프로그램을 만들었습니다.file픽셀의 거대한 묶음: for (i=0; i < width*width; i++) { fwrite(hue(raster_matrix[i]), 1, 3, file); } 어디에hue값 [0..255], 다음을 반환합니다.char *3바이트, R, G, B로 표시합니다. 이 원시 파일을 유효한 이미지 파일로 만들기 위해 이미지 파일에 최소 헤더를 넣고 싶습니다. 보다 간결하게, 다음에서 전환: offset 0000 : height * width : data } my data, 24bit RGB pixels 대상: offset 0000 : dword : m..

itsource 2023.07.01

LEA EAX, [EAX]의 의미는 무엇입니까?

LEA EAX, [EAX]의 의미는 무엇입니까? LEA EAX, [EAX] 나는 이 명령어를 마이크로소프트 C 컴파일러로 컴파일된 바이너리에서 만났습니다.그것은 분명히 EAX의 값을 바꿀 수 없습니다.그럼 왜 거기에 있는 거지?그것은NOP. 다음은 일반적으로 다음과 같이 사용됩니다.NOP그들은 모두 같은 일을 하지만 길이가 다른 기계 코드를 생성합니다.정렬 요구 사항에 따라 다음 중 하나가 선택됩니다. xchg eax, eax = 90 mov eax, eax = 89 C0 lea eax, [eax + 0x00] = 8D 40 00 이 기사에서: 이 트릭은 MSVC++ 컴파일러에서 다른 길이의 NOP 명령을 방출하는 데 사용됩니다(점프 대상 전 패딩용).예를 들어 MSVC++는 4바이트 및 6바이트 패딩이..

itsource 2023.06.21

상수 포인터 vs 상수 값에서의 포인터

상수 포인터 vs 상수 값에서의 포인터 이 질문에는 이미 답변이 있습니다. char * const와 const char *의 차이점은 무엇입니까? (답변 19개) 닫힘6년 전에요. 다음 선언의 차이점은 무엇입니까? char * const a; const char * a; 차이를 이해하기 위해 이 작은 프로그램을 작성했습니다. #include #include int main (int argc, char **argv) { char a = 'x'; char b = 'y'; char * const pc1 = &a; const char * pc2 = &a; printf ("Before\n"); printf ("pc1=%p\n", pc1); printf ("*pc1=%c\n", *pc1); printf ("pc2=..

itsource 2023.02.06

부호 있는 정수에 대한 비트 연산 결과가 정의되어 있습니까?

부호 있는 정수에 대한 비트 연산 결과가 정의되어 있습니까? 나는 의 행동이>>on signed integer는 구현에 의존할 수 있습니다(특히 왼쪽 오퍼랜드가 마이너스인 경우). 은요?~,>>,&,^,|부호 ( 「」 「」)인 .short,int,long,long long(비트 내용에 관해서는) 그 타입이 부호 없는 경우와 같은 결과가 보증되고 있습니까? 오퍼랜드의, 「」는 과 같습니다.는 구현 정의(보통 "산술" 오른쪽 시프트)입니다. 는 개념적으로 비트 연산자가 아닙니다.곱셈이나 나눗셈과 같은 산술 연산자로, 피연산자가 잘 정의된 피연산자에 대해 2의 적절한 거듭제곱을 합니다. 비트 ^,~,| , , , , 입니다.&오퍼랜드의 (프로모트)타입의 값의 비트 표현으로 동작합니다.그 결과는 부호화된 표현(..

itsource 2022.11.24

C에서 참조로 통과

C에서 참조로 통과 C가 참조에 의한 변수 전달을 지원하지 않는 경우, 왜 이것이 작동합니까? #include void f(int *j) { (*j)++; } int main() { int i = 20; int *p = &i; f(p); printf("i = %d\n", i); return 0; } 출력: $ gcc -std=c99 test.c $ a.exe i = 21 그것은 다른 사람들이 말한 것처럼 pass-by-value가 아니라 pass-by-value이다. C 언어는 예외 없이 pass-by-value입니다.포인터를 파라미터로 전달한다고 해서 pass-by-reference가 전달되는 것은 아닙니다. 규칙은 다음과 같습니다. 함수는 실제 파라미터 값을 변경할 수 없습니다. (위의 인용은 실제로..

itsource 2022.09.28

이 C 프로그램은 두 가지 주요 기능으로 어떻게 컴파일 및 실행됩니까?

이 C 프로그램은 두 가지 주요 기능으로 어떻게 컴파일 및 실행됩니까? 오늘 하나의 커스텀 라이브러리로 작업하던 중 이상한 행동을 발견했습니다.정적 라이브러리 코드에 디버깅이 포함되어 있습니다.main()기능.그것은 안에 있지 않았다.#define깃발. 그래서 도서관에도 있다.그리고 그것은 실제를 포함하고 있는 다른 프로그램 링크에 사용됩니다.main(). 둘 다 링크되어 있는 경우 링커는 다음 명령어에 대해 다중 선언 오류를 발생시키지 않습니다.main()어떻게 이런 일이 일어날 수 있는지 궁금했어요. 간단하게 하기 위해서, 같은 동작을 시뮬레이트 한 샘플 프로그램을 작성했습니다. $ cat prog.c #include int main() { printf("Main in prog.c\n"); } $ c..

itsource 2022.09.27

C99는 얼마나 일반적으로 지원됩니까?

C99는 얼마나 일반적으로 지원됩니까? C99 표준은 현재 컴파일러에서 얼마나 일반적으로 지원됩니까?저는 GCC조차 그것을 완전히 지원하지 않는 것을 알고 있습니다.이게 맞나 C99의 어떤 기능이 다른 기능보다 더 지원됩니까? 즉, 어떤 기능을 사용하여 대부분의 컴파일러가 나를 이해할 수 있는지 확인할 수 있는 기능은 무엇입니까?휴대용 C 코드를 쓰고 싶다면 C89(구 ANSI C 규격)로 쓰는 것이 좋습니다.이 표준은 대부분의 컴파일러에서 지원됩니다. 인텔 C 컴파일러는 C99를 매우 잘 지원하며 고속 바이너리를 생성합니다.(0x69 감사합니다!) MSVC는 몇 가지 새로운 기능을 지원하며 Microsoft는 향후 버전에서 지원을 확대할 계획입니다. GCC는 C99의 새로운 기능을 지원합니다.그들은 C..

itsource 2022.09.25

정적 메모리 할당과 동적 메모리 할당의 차이

정적 메모리 할당과 동적 메모리 할당의 차이 정적 메모리 할당과 동적 메모리 할당의 차이점은 무엇입니까? 예를 들어 설명해 주시겠습니까?다음은 표준 인터뷰 질문입니다. 동적 메모리 할당 는 실행 시 " " "를 사용하여 되어 있습니까?calloc(),malloc()그리고 친구들.히프 데이터 구조와는 무관하지만, 「히프」메모리라고도 불립니다. int * a = malloc(sizeof(int)); 됩니다.free() 입니다.아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아. 자동 메모리 할당 이것은, 통상은 「스택」메모리라고 불리는 것으로, 새로운 스코프를 입력했을 때에 할당됩니다(통상은 새로운 기능이 콜스택에 푸시 되었을 때).범위를 벗어나면 자동 메모리 주소의 값은 정의되지 않으며 이..

itsource 2022.09.25
반응형