반응형

C 135

점프 테이블이 뭐죠?

점프 테이블이 뭐죠? 누가 점프 테이블의 메커니즘과 임베디드 시스템에 필요한 이유를 설명할 수 있습니까?점프 테이블은 함수에 대한 포인터의 배열 또는 기계 코드 점프 명령의 배열일 수 있습니다.비교적 정적인 함수 세트(시스템 호출이나 클래스의 가상 함수 등)가 있는 경우 이 테이블을 한 번 만들고 간단한 인덱스를 사용하여 함수를 배열로 호출할 수 있습니다.이는 포인터를 가져와 함수를 호출하거나 사용되는 테이블의 종류에 따라 기계 코드로 이동하는 것을 의미합니다. 임베디드 프로그래밍에서는 다음과 같은 이점이 있습니다. 인덱스는 머신 코드나 포인터보다 메모리 효율이 높기 때문에 제약이 있는 환경에서는 메모리를 절약할 수 있습니다. 특정 함수에 대해서는 인덱스가 안정적으로 유지되며 함수를 변경하면 함수 포인터..

programing 2022.08.10

ASCII 문자열 및 엔디안니스

ASCII 문자열 및 엔디안니스 저와 함께 일하는 인턴이 컴퓨터 공학에서 본 엔디안니스 문제에 대한 시험을 보여주었습니다.ASCII 문자열 "My-Pizza"를 보여주는 질문이 있었는데, 학생은 그 문자열이 작은 엔디안 컴퓨터에서 메모리에 어떻게 표현되는지를 보여줘야 했다.물론 ASCII 문자열은 endian 문제에 영향을 받지 않기 때문에 이는 트릭 질문처럼 들립니다. 하지만 놀랍게도 이 인턴은 교수님이 현악기가 다음과 같이 표현될 것이라고 주장합니다. P-yM azzi 이럴 리가 없다는 거 알아ASCII 문자열은 어떤 머신에서도 이와 같이 표시되지 않습니다.그런데 교수님이 이걸 고집하시는 것 같아요.그래서 작은 C 프로그램을 써서 인턴에게 교수님께 전해달라고 했어요. #include #include ..

programing 2022.08.10

C/C++ 회선 번호

C/C++ 회선 번호 디버깅을 위해 C/C++ 컴파일러에서 회선번호를 취득할 수 있습니까? (일부 컴파일러의 표준방법 또는 특정방법) 예 if(!Logical) printf("Not logical value at line number %d \n",LineNumber); // How to get LineNumber without writing it by my hand?(dynamic compilation) 프리프로세서 매크로를 사용해야 합니다.__LINE__그리고.__FILE__이것들은 미리 정의된 매크로이며, C/C++ 표준의 일부입니다.전처리 중에는 현재 행 번호를 나타내는 정수를 유지하는 상수 문자열과 현재 파일 이름으로 각각 치환된다. 기타 프리프로세서 변수: __func__: 함수명 (이것은 C9..

programing 2022.08.10

int vs 플로어에 캐스팅

int vs 플로어에 캐스팅 이들 사이에 어떤 차이가 있습니까? float foo1 = (int)(bar / 3.0); float foo2 = floor(bar / 3.0); 두 건 모두 같은 결과가 나온 것으로 알고 있습니다.컴파일된 코드에 차이가 있나요?int에 캐스팅하면 0 방향으로 잘라집니다. floor()음의 무한대를 향해 잘라집니다.이렇게 하면 다음과 같은 다른 값을 얻을 수 있습니다.bar음성이었다.앞에서 말한 것처럼 양수는 같지만 음수는 다르다.규칙은 int는 0을 향해 반올림하는 반면 바닥은 음의 무한대를 향해 반올림하는 것입니다. floor(4.5) = (int)4.5 = 4 floor(-4.5) = -5 (int)(-4.5) = -4 이와 같이 실행 시간에도 차이가 있습니다.제 시스템..

programing 2022.08.10

size_t는 C로 얼마입니까?

size_t는 C로 얼마입니까? 는 와와있있있 with with with with with with with 가 헷갈린다.size_t에 의해 을 알고 있다.sizeof내용인가요?지만만 그게 확? ???이터터타?타 입?? 를 내가 ★★★★★★★★★★★★★★★★★★★★★★★★★★.for 디세이블로그: for(i = 0; i < some_size; i++) int i; ★★★★★★★★★★★★★★★★★」size_t i;Wikipedia에서: C 1999년 ISO C 규격(C99)에 의거하여size_t는 16비트 이상의 부호 없는 정수형입니다(섹션 7.17 및 7.18.3 참조). size_t는, ISO 규격등의 되는 부호 를 들어, C99 ISO/IEC 9899 규격은, 「C/C++」에 되어 있습니다.stdde..

programing 2022.08.10

fork()는 어떻게 0을 반환할 시기를 알 수 있습니까?

fork()는 어떻게 0을 반환할 시기를 알 수 있습니까? 다음 예를 들어 보겠습니다. int main(void) { pid_t pid; pid = fork(); if (pid == 0) ChildProcess(); else ParentProcess(); } 틀렸다면 정정해 주세요.fork()가 실행되면 자녀 프로세스가 생성됩니다.이 answer fork()를 사용하면 두 번 반환됩니다.이것은 부모 프로세스용과 자녀 프로세스용입니다. 즉, 포크 콜이 종료된 후가 아니라 포크 콜 중에 두 개의 개별 프로세스가 존재하게 됩니다. 자프로세스의 경우 0을 반환하는 방법과 부모프로세스의 경우 올바른 PID를 반환하는 방법을 이해할 수 없습니다. 여기가 정말 혼란스러운 곳이야이 답변은 fork()가 프로세스의 컨텍..

programing 2022.08.09

C++의 size_t와 int의 차이점은 무엇입니까?

C++의 size_t와 int의 차이점은 무엇입니까? 몇 가지 C++ 예에서 이 유형의 사용을 볼 수 있습니다.size_t간단한 걸 썼을 텐데int차이점은 무엇이며, 그 이유는 무엇입니까?size_t더 좋을까?친근한 Wikipedia에서: stdlib.h 및 stdef.h 헤더 파일은 오브젝트의 크기를 나타내기 위해 사용되는 size_t라는 데이터 유형을 정의합니다.크기를 갖는 라이브러리 함수는 size_t 유형이어야 하며 연산자 크기는 size_t로 평가됩니다. size_t의 실제 유형은 플랫폼에 의존합니다.일반적인 실수는 size_t가 부호 없는 int와 동일하다고 가정하는 것입니다.이는 특히 64비트아키텍처가 보급됨에 따라 프로그래밍 오류를 일으킬 수 있습니다. 또한 size_t가 중요한 이유 확인..

programing 2022.08.09

scanf("%*s") 및 scanf("%*d") 형식의 식별자란 무엇입니까?

scanf("%*s") 및 scanf("%*d") 형식의 식별자란 무엇입니까? 이 형식의 실제 용도는 무엇입니까?"%*"스캔으로이 형식이 존재한다면, 그 이면에 어떤 목적이 있을 것입니다.다음 프로그램은 이상한 출력을 보여줍니다. #include int main() { int i; char str[1024]; printf("Enter text: "); scanf("%*s", &str); printf("%s\n", str); printf("Enter interger: "); scanf("%*d", &i); printf("%d\n", i); return 0; } 출력: manav@workstation:~$ gcc -Wall -pedantic d.c d.c: In function ‘main’: d.c:8: w..

programing 2022.08.09

C를 사용하여 Unix에서 파일을 복사하려면 어떻게 해야 합니까?

C를 사용하여 Unix에서 파일을 복사하려면 어떻게 해야 합니까? 저는 Win32의 Copy File과 동등한 Unix를 찾고 있습니다.저만의 버전을 써서 시간을 낭비하고 싶지는 않습니다..를 들어 비포터블 API를 호출할 필요는 .sendfile또는 외부 유틸리티에 셸아웃합니다. 있다: 70년 대에 통하고 있다. #include #include #include int cp(const char *to, const char *from) { int fd_to, fd_from; char buf[4096]; ssize_t nread; int saved_errno; fd_from = open(from, O_RDONLY); if (fd_from < 0) return -1; fd_to = open(to, O_WRON..

programing 2022.08.09
반응형