반응형

C 103

C에서 가변 함수의 호출을 전송합니다.

C에서 가변 함수의 호출을 전송합니다. C 에서는, Variadic 함수의 호출을 전송 할 수 있습니까?예를 들어, int my_printf(char *fmt, ...) { fprintf(stderr, "Calling printf with fmt %s", fmt); return SOMEHOW_INVOKE_LIBC_PRINTF; } 이 경우 호출을 다른 방법으로 기록하거나 vfprintf를 사용할 수 있기 때문에 위와 같은 방법으로 호출을 전송할 필요는 없습니다.그러나 현재 작업 중인 코드베이스에서는 래퍼가 실제 작업을 수행해야 하며 vfrintf와 같은 도우미 기능이 없거나 추가될 수 없습니다. [갱신 내용 : 지금까지의 답변에 따라서는 다소 혼동이 있는 것 같습니다.질문을 바꿔 말하면, 일반적으로 함수..

programing 2022.07.16

C에서 글로벌 변수를 사용하는 것은 언제가 좋습니까?

C에서 글로벌 변수를 사용하는 것은 언제가 좋습니까? "절대 안 돼!"라는 다양한 의견이 있는 것 같아요. (단순한 매크로로라도) 항상 캡슐화해 주세요.」 「별것 아닙니다.편할 때 사용합니다.」 그렇게. 구체적이고 구체적인 이유(가급적이면 예를 들어) 글로벌 변수가 위험한 이유 대체 변수 대신 전역 변수를 사용해야 하는 경우 글로벌 변수를 부적절하게 사용하고 싶은 사용자를 위해 어떤 대안이 있는가? 이것은 주관적이지만, 저는 하나의 대답(모든 개발자가 글로벌에 대해 가져야 할 사랑과 증오의 관계를 가장 잘 나타낸다는 것)을 선택하고, 커뮤니티는 그들의 답변을 바로 아래에 투표할 것입니다. 신입사원에게는 이런 참고문헌이 중요하다고 생각합니다만, 자신과 실질적으로 비슷한 답변이 또 있다고 해서 혼란스럽게 하..

programing 2022.07.16

변수를 함수 맨 위에 선언하시겠습니까, 아니면 별도의 범위로 선언하시겠습니까?

변수를 함수 맨 위에 선언하시겠습니까, 아니면 별도의 범위로 선언하시겠습니까? 방법 1과 방법 2 중 어느 것이 더 좋습니까? 방법 1: LRESULT CALLBACK wpMainWindow(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { switch (msg) { case WM_PAINT: { HDC hdc; PAINTSTRUCT ps; RECT rc; GetClientRect(hwnd, &rc); hdc = BeginPaint(hwnd, &ps); // drawing here EndPaint(hwnd, &ps); break; } default: return DefWindowProc(hwnd, msg, wparam, lparam); } return 0; }..

programing 2022.07.13

일상적인 기계는 어떻게 프로그램됩니까?

일상적인 기계는 어떻게 프로그램됩니까? 닫혔어. 이 질문은 좀 더 자세히 설명해야 합니다.초점을 맞춥니다.현재 답변을 받고 있지 않습니다. 이 질문을 개선하시겠습니까?이 게시물을 편집하여 하나의 문제에 초점을 맞추도록 질문을 업데이트하십시오. 작년에 문을 닫았어요. 이 질문을 개선하다 일상적인 기계(어플라이언스, 디지털 시계 등 컴퓨터나 모바일 디바이스는 많지 않음)는 어떻게 프로그램됩니까?코카콜라 자판기의 프로그래밍에는 어떤 코드가 들어가나요?커피 메이커는 어떻게 미리 정해진 시간을 받아들이고 몇 시간 후에 커피 한 주전자를 끓이기 시작할까요? 이러한 종류의 기계에는 운영 체제가 내장되어 있습니까, 아니면 더 기본적인 것입니까?어셈블리, C, 또는 다른 언어로 쓰여져 있습니까? 또, 이러한 operat..

programing 2022.07.13

free()는 errno를 설정합니까?

free()는 errno를 설정합니까? ifbuf는 입니다.malloc()buffer, does "char", "does."free(buf)set/set/set/set(설정)errno 버퍼를 파일에 쓴 후 해방한다고 칩시다.더 이상 필요없기 때문입니다. 코드의 에러 정책은, 에러에 대해서 -1을 반환하는 것이라고 합니다. 메모리 누전 없이 버퍼와 에러 체크를 기입하는 것이 적절한 방법입니까? fputs(buf, somefile); free(buf); if (errno) return -1; 또는 다음과 같이 에러노 설정을 무료로 할 필요가 있습니까? fputs(buf, somefile); if (errno){ free(buf); return -1; } free(buf); 아니면 공포에 대한 공포, do {..

programing 2022.07.13

정수 오버플로로 인해 메모리 파손으로 정의되지 않은 동작이 발생합니까?

정수 오버플로로 인해 메모리 파손으로 정의되지 않은 동작이 발생합니까? 최근 C 및 C++에서 부호화된 정수 오버플로가 정의되지 않은 동작을 일으킨다는 것을 알게 되었습니다. 식을 평가하는 동안 결과가 수학적으로 정의되지 않았거나 해당 유형의 대표 가능한 값 범위에 포함되지 않은 경우 동작은 정의되지 않습니다. 저는 현재 정의되지 않은 동작의 이유를 이해하려고 합니다.여기서 정의되지 않은 동작이 발생하는 것은 정수가 너무 커서 기본 유형에 맞지 않을 때 자기 주변의 메모리를 조작하기 시작했기 때문이라고 생각했습니다. 그래서 저는 Visual Studio 2015에서 다음과 같은 코드로 이론을 테스트하기 위한 작은 테스트 프로그램을 만들기로 했습니다. #include #include struct TestS..

programing 2022.07.12

C의 int에 long int를 할당하면 어떻게 됩니까?

C의 int에 long int를 할당하면 어떻게 됩니까? 최근 과제에서, 나는 사용하라는 말을 들었다.long큰 숫자일 수 있으므로 결과를 저장할 변수입니다. 시스템(인텔 core i5/64비트 Windows 7/gnu gcc 컴파일러)에서 실제로 문제가 있는지 확인해보기로 했습니다.다음 코드가 검출되었습니다. printf("sizeof(char) => %d\n", sizeof(char)); printf("sizeof(short) => %d\n", sizeof(short)); printf("sizeof(short int) => %d\n", sizeof(short int)); printf("sizeof(int) => %d\n", sizeof(int)); printf("sizeof(long) => %d\n"..

programing 2022.07.12

autoconf 및 autotools 대체 방법

autoconf 및 autotools 대체 방법 현재 이 질문은 Q&A 형식에 적합하지 않습니다.우리는 답변이 사실, 참고 자료 또는 전문지식에 의해 뒷받침되기를 기대하지만, 이 질문은 토론, 논쟁, 여론 조사 또는 연장된 토론을 요구할 것이다.이 질문이 개선되고 다시 열릴 수 있다고 생각되면헬프센터를 방문하여 안내를 받으십시오. 닫힘9년 전. 저는 GNU Autotools(대부분 Autoconf, 때로는 Libtool)를 자주 사용하고 있습니다.휴대성이 걸림돌이 되는 프로젝트를 진행하고 있습니다.하지만 나머지 팀원들은 M4와 함께 일하는 것이 편치 않습니다.한 명이 아니라 네 명이서 받은 거예요 어쨌든 누군가 Python이나 PHP 기반의 것을 추천할 수 있을까요?저는 더 큰 트리의 C 엔드에서 일하고..

programing 2022.07.12

include statement, header 또는 source를 어디에 배치해야 합니까?

include statement, header 또는 source를 어디에 배치해야 합니까? include를 헤더 파일에 넣어야 하나요, 소스 파일에 넣어야 하나요?헤더 파일에 include 문이 포함되어 있는 경우, 그 헤더 파일을 소스에 포함시키면 소스 파일에는 헤더에 포함된 모든 파일이 포함됩니까?아니면 소스 파일에만 포함시켜야 하나요?put include in header 자체에서 필요한 경우에만 include를 입력합니다. 예: 는 유형을 합니다.size_t .그리고나서#include 헤더 파일에 격납합니다. 는 「」를 사용합니다.strlen .그리고나서#include 소스 파일에 있습니다. 수년간 이것에 대해 꽤 많은 의견 차이가 있었다.한 때 헤더는 관련된 모듈의 내용만 선언하는 것이 일반적이..

programing 2022.07.12

main(int argc, char *argv [ ] )에 대해서

main(int argc, char *argv [ ] )에 대해서 이 질문에는 이미 답변이 있습니다. 닫힘11년 전에요. 중복 가능성: main()에 대한 인수는 무엇입니까? int argc, char *argv [ ]는 무엇을 의미합니까? 모든 프로그램은 로 시작됩니다.main(int argc, char *argv[])정의. 무슨 뜻인지 모르겠어요.프로그램에 사용하지 않으면 왜 이런 주장을 사용하는지 설명해 주시면 감사하겠습니다.왜 그냥 안 돼?int main()? 프로그램 이름이 다음 요소 중 하나입니까?*argv[]그리고.argc의 인수 개수입니다.*argv[]에 전송되는 다른 인수는 무엇입니까?*argv[]어떻게 보내요?의론argc그리고.argv의main는 프로그램에 인수를 송신하는 방법으로 사용..

programing 2022.07.11
반응형