반응형

C 251

GCC와 g+++는 어떻게 포장되는가?

GCC와 g+++는 어떻게 포장되는가? 이 일은 한동안 나를 귀찮게 했다.GCC와 g++는 어떻게 스스로를 컴파일하는가? 내 생각엔 모든 개정판은 이전에 만들어진 개정판과 함께 편집될 것 같아.이게 사실이야?그리고 만약 그렇다면, 가장 오래된 g++와 GCC 버전이 조립으로 쓰여졌다는 뜻일까?현대 환경(x86 Linux)에서 GCC의 부트스트랩 프로세스를 복제하려면 bootstraplap 프로젝트에서 개발한 도구를 사용하십시오. 다음 두 명령이 수행하는 대략적인 작업을 수행하는 조립자(x86에서는 357바이트 바이너리)로 시작할 수 있다. sed 's/[;#].*$//g' hex0_x86.hex0 | xxd -r -p > hex0 chmod +x hex0 즉, 바이너리 프로그램에 상당하는 ASCII를 바..

programing 2022.04.27

하위 프로세스를 종료하는 방법 - _hostname vs. exit

하위 프로세스를 종료하는 방법 - _hostname vs. exit 다음 코드 조각을 고려하십시오. pid_t cpid = fork(); if (cpid == -1) { perror("fork"); exit(EXIT_FAILURE); } if (cpid == 0) { // in child execvp(argv[1], argv + 1); perror("execvp"); _exit(EXIT_FAILURE); } // in parent 집행부가 돌아오면 아동 과정을 어떻게 끝내야 할까?출구()를 사용할 것인가, 아니면 _exit()를 사용할 것인가?반드시 사용해야 한다._Exit().exit()추가한 기능을 호출하십시오.atexit()그리고 다음으로 생성된 파일 삭제tmpfile()부모 과정이란 것이 실제로 ..

programing 2022.04.27

C 매크로는 무엇에 유용한가?

C 매크로는 무엇에 유용한가? 나는 C를 조금 썼고, 그것이 무엇을 하고 있는지 대강 알 수 있을 정도로 잘 읽을 수 있지만 매크로에 부딪칠 때마다 완전히 나를 던져버렸다.나는 결국 매크로가 무엇인지 기억하고 읽으면서 머릿속으로 그것을 대체해야 한다.직관적이고 이해하기 쉬운 것들이 항상 작은 미니 기능들 같았는데 왜 기능들만이 아니었는지 늘 궁금했다. 나는 전처리장치에서 디버그나 크로스 플랫폼 빌드를 위해 다른 빌드 유형을 정의해야 할 필요성은 이해할 수 있지만, 임의의 대체물을 정의하는 능력은 이미 어려운 언어를 더 이해하기 어렵게 만드는 데만 유용한 것 같다. 왜 이렇게 복잡한 전처리가 C에게 도입되었는가?그리고 만약 #debug 스타일 조건부 컴필레이션이라면 왜 그것이 여전히 단순한 목적 이외의 용..

programing 2022.04.27

한 구조물을 다른 구조물에 복사

한 구조물을 다른 구조물에 복사 구조 구성원을 회원별로 복사할 수 있다는 것을 알고 있으며, 대신 다음 작업을 수행할 수 있다.memcpy구조물에 대해 어떻게 생각해? 그렇게 하는 것이 바람직한가? 내 구조에는 같은 구성원을 가진 다른 구조물에 복사해야 하는 끈도 있다.그걸 어떻게 하는 거죠?평이한 임무에 의한 복사는 짧고 읽기 쉬우며 추상화 수준이 높기 때문에 가장 좋다.(코드의 인간 독자에게) "이 비트를 여기서 저기로 복사"하고, 독자가 크기 인수에 대해 사본에 대해 생각하도록 요구하는 대신, 당신은 그냥 평이한 과제("여기서 여기까지 이 값을 복사")를 하는 것이다.사이즈가 맞는지 아닌지 망설일 게 없다. 또한, 구조물이 심하게 패딩된 경우, 할당하면 컴파일러가 패딩을 복사하지 않아도 되기 때문에..

programing 2022.04.27

C의 함수에서 여러 값을 반환하려면 어떻게 해야 하는가?

C의 함수에서 여러 값을 반환하려면 어떻게 해야 하는가? 결과를 생성하는 기능이 있는 경우int그리고 결과string함수에서 두 개를 모두 반환하려면 어떻게 해야 하는가? 내가 알 수 있는 한 나는 함수 이름 앞에 있는 종류에 의해 결정되는 한 가지만 반환할 수 있다.무슨 말인지 모르겠다.string하지만 기억력을 관리한다고 가정해 볼게 다음과 같은 두 가지 해결책이 있다. 1: 반품 astruct네가 필요한 모든 타입을 포함하고 있어. struct Tuple { int a; string b; }; struct Tuple getPair() { Tuple r = { 1, getString() }; return r; } void foo() { struct Tuple t = getPair(); } 2: 포인터..

programing 2022.04.27

C와 C++에서 거의 동일한 코드 간의 실행 시간에서 큰 차이(x9)

C와 C++에서 거의 동일한 코드 간의 실행 시간에서 큰 차이(x9) www.spoj.com에서 이 연습문제를 풀려고 했는데: FCTRL - 요인 꼭 읽을 필요는 없고, 궁금하면 그냥 해 :) 먼저 C++로 구현(여기 내 솔루션이 있음): #include using namespace std; int main() { unsigned int num_of_inputs; unsigned int fact_num; unsigned int num_of_trailing_zeros; std::ios_base::sync_with_stdio(false); // turn off synchronization with the C library’s stdio buffers (from https://stackoverflow.com/..

programing 2022.04.26

Enum과 Define 문 간의 차이

Enum과 Define 문 간의 차이 정의문을 사용하는 것과 C/C++의 열거문을 사용하는 것의 차이점은 무엇인가? (그리고 C 또는 C++와 함께 사용할 때 차이점이 있는가? 예를 들어, 언제 사용해야 하는가? enum {BUFFER = 1234}; 에 걸쳐서 #define BUFFER 1234 enum구문 요소를 규정하다 #define프리프로세서 명령어로서 컴파일러가 코드를 보기 전에 실행되므로 C 자체의 언어 요소가 아니다. 일반적으로 에넘버들은 활자가 안전하고 더 쉽게 발견될 수 있기 때문에 선호된다.정의는 찾기 어렵고 복잡한 동작을 가질 수 있음(예: 코드 조각 하나가 a를 재정의할 수 있음)#define이 사사추적. 추적하기 수 있다추적하기 어려울 수 있어#define문장은 컴파일러가 코드를 ..

programing 2022.04.26

setsockopt(SO_REUSEADR)를 사용하는 방법

setsockopt(SO_REUSEADR)를 사용하는 방법 나는 산딸기 파이에서 내 http 서버를 운영하고 있다.문제는 프로그램을 중지하고 다시 시작하면 포트를 더 이상 사용할 수 없다는 겁니다.가끔 많은 요청을 받을 때도 같은 문제가 생긴다. 오류가 발생해도 포트를 계속 사용할 수 있도록 SO_REUSEADR을 사용하고 싶지만 설정 운이 없었다.아래는 내 암호야. 내가 받는 오류는 "Binding on binding:이미 사용 중인 주소". #include #include #include #include #include #include #include void error(const char *msg) { perror(msg); exit(1); } int main(int argc, char *argv[..

programing 2022.04.26

Unix에 대한 재귀 mkdir() 시스템 호출

Unix에 대한 재귀 mkdir() 시스템 호출 유닉스 시스템 호출에 대한 mkdir(2) man 페이지를 해당 이름으로 읽고 나면 호출이 경로에 중간 디렉토리를 만들지 않고 경로의 마지막 디렉토리만 생성하는 것으로 나타난다.내 디렉토리 문자열을 수동으로 구문 분석하고 각 디렉토리를 개별적으로 작성하지 않고 경로에 모든 디렉토리를 작성할 수 있는 방법(또는 다른 기능)이 있는가?불행히도 너를 위해 그것을 할 수 있는 시스템 호출은 없다.나는 그것이 오류의 경우에 일어나야 하는 것에 대한 의미론들을 제대로 정의할 수 있는 방법이 없기 때문이라고 추측한다.이미 작성된 디렉토리를 그대로 두어야 하는가?삭제하시겠습니까?삭제에 실패하면 어떻게 하시겠습니까?등등... 하지만, 여러분 스스로 굴리는 것은 꽤 쉬우며,..

programing 2022.04.26

체크하는 C 프로그램 vs 빅 엔디안

체크하는 C 프로그램 vs 빅 엔디안 이 질문에는 이미 다음과 같은 해답이 있다. 닫힌9년 전. 중복 가능: C 큰 엔디안 또는 작은 엔디안 머신을 결정하는 매크로 정의? int main() { int x = 1; char *y = (char*)&x; printf("%c\n",*y+48); } 어린 엔디안이라면 1을 인쇄할 것이다.큰 엔디안이라면 0을 인쇄할 것이다.그것이 맞습니까?또는 char*를 int x로 설정하면 엔디안성과 관계없이 항상 가장 중요하지 않은 부분을 가리킬 것인가?요컨대 그렇다. 우리가 32비트 컴퓨터에 있다고 가정합시다. 만약 그것이 작은 엔디안이라면.x그 기억 속에는 다음과 같은 것이 있을 것이다. higher memory -----> +----+----+----+----+ |0..

programing 2022.04.25
반응형