반응형

c 68

libc static과 다른 라이브러리를 동적으로 연결하는 GCC, 재검토?

libc static과 다른 라이브러리를 동적으로 연결하는 GCC, 재검토? 다음 질문은 관련이 있지만 제 질문에 대답하지 않습니다. GCC에서 부분적으로 정적이고 부분적으로 동적인 링크 동적 라이브러리를 다른 정적 라이브러리에 연결하는 정적 라이브러리에 연결 GCC: 일부 라이브러리만 정적으로 연결 gcc 공유 라이브러리 기능의 정적 링크 아까도 아주 비슷한 질문을 했는데, 제가 시작한 이전 질문이 댓글란에서 다소 어수선해져서 충분히 답변하지 못했기 때문에 (하지만 좋은 노력이었고 적어도 부분적으로 답변을 했기 때문에 답변한 것으로 표시했습니다) 새로운 질문을 하겠습니다.문제는 특히 다른 라이브러리(예: libm)를 동적으로 연결하면서 libc를 정적으로 연결하는 방법입니다.이것은 첫 번째 질문에서 할..

programing 2023.09.20

문자열에 붙여넣기

문자열에 붙여넣기 가능한 한 적은 메모리를 사용하여 C 문자열에 추가하는 가장 효율적인 방법은 무엇입니까? 큰 디렉터리 트리에 있는 파일의 경로를 재구성하려고 합니다. 여기 제가 전에 했던 일에 대한 아이디어가 있습니다. char temp[LENGTH], file[LENGTH]; file = some_file_name; while (some_condition) { parent_dir = some_calculation_that_yields_name_of_parent_dir; sprintf(temp, "%s/%s", parent_dir, file); strcpy(file, temp); } 근데 이건 좀 투박해 보여요. 어떤 도움이라도 주시면 감사하겠습니다.감사합니다!동일한 메모리 청크에 복사를 원하는 경우에..

programing 2023.09.15

size_t 유형의 변수에 대한 교차 플랫폼 형식 문자열?

size_t 유형의 변수에 대한 교차 플랫폼 형식 문자열? 이 질문에는 이미 다음과 같은 답변이 있습니다. printf를 사용하여 size_t를 인쇄하는 올바른 방법은 무엇입니까? (3개 답변) 닫힘3년 전에. 크로스 플랫폼 c/c++ 프로젝트(Win32, Linux, OSX)에서 *printf 함수를 사용하여 size_t 타입의 변수를 인쇄해야 합니다.어떤 환경에서는 size_t가 8바이트이고 어떤 환경에서는 4바이트입니다.glibc에서는 %zd를 사용하고 Win32에서는 %Id를 사용할 수 있습니다.이 문제를 해결할 수 있는 우아한 방법이 있을까요?PRIuPTRmacroo()의 합니다.uintptr_ta, 이 할 이 할 size_t예를 들어, 자르지 않고 사용할 수 있습니다. fprintf(strea..

programing 2023.09.15

비트 조작 모범 사례

비트 조작 모범 사례 초보 C 프로그래머인 저는 기기에서 제어 비트를 설정할 때 가장 읽기 쉽고 이해하기 쉬운 해결책이 무엇인지 궁금합니다.어떤 기준이 있습니까?흉내 낼 수 있는 예시적인 코드가 있습니까?구글은 신뢰할만한 답변을 주지 않았습니다. 예를 들어, 제어 블록 맵은 다음과 같습니다. 제가 볼 수 있는 첫 번째 방법은 필요한 비트를 간단히 설정하는 것입니다.그것은 댓글로 많은 설명을 필요로 하고 그렇게 전문적이지는 않은 것 같습니다. DMA_base_ptr[DMA_CONTROL_OFFS] = 0b10001100; 두 번째 방법은 비트 필드를 만드는 것입니다.처음 언급한 옵션과 달리 이렇게 사용되는 것을 경험한 적이 없기 때문에 이것을 고수해야 하는지 잘 모르겠습니다. struct DMA_contr..

programing 2023.09.15

getopt_long() -- 적절한 사용 방법은 무엇입니까?

getopt_long() -- 적절한 사용 방법은 무엇입니까? 네, 검색해보니 올바른 방향으로 시작한 StackOverflow 주제가 다음 두 가지 있었습니다. C/UNIX의 인수 구문 분석 도우미 명령줄에서 C 프로그램으로 인수 전달 참고: 모든 코드는 의사 코드입니다. 작동하면 컴파일 가능한 코드가 게시됩니다. 하지만 C에서 getopt_long()을 사용하는 방법에 대해서는 아직 완전히 혼란스럽습니다.제가 쓰고 있는 프로그램은 다음과 같은 가능한 태그가 있는 것으로 정의됩니다. (그러나 필요한 만큼만 포함할 수 있고 나머지는 빈 값으로 채울 수 있습니다.) id3tagEd filename -title "title" -artist "artist" -year 1991 -comment "comment" ..

programing 2023.09.15

"iff" 대 "if other if"의 성능 차이

"iff" 대 "if other if"의 성능 차이 C/C++의 두 문장 사이에 성능 차이가 있는지 생각하고 있었습니다. 사례 1: if (p==0) do_this(); else if (p==1) do_that(); else if (p==2) do_these(): 사례 2: if(p==0) do_this(); if(p==1) do_that(); if(p==2) do_these(); 단순한 유형을 가정할 때(이 경우 사용했습니다.int) 및 재미있는 비즈니스는 없습니다(operator= forint를 재정의하지 않음). 적어도 AMD64의 GCC 4.6에서는 차이가 없습니다.생성된 코드는 동일합니다. 0000000000000000 : 0000000000000040 : 0: 85 ff test %edi,%e..

programing 2023.09.15

printf를 사용하여 clock_t를 인쇄하는 올바른 방법은 무엇입니까?

printf를 사용하여 clock_t를 인쇄하는 올바른 방법은 무엇입니까? 저는 에 .unsigned long long을 합니다.%llu인쇄하려고 하지만, 그 이후로.size_t가 있습니다.%z왜자,왜는까가 요?clock_t하나 있어요? 그것에 대한 매크로도 없습니다. 시스템 및 x64템(OS및 CPU)다수할는tn수할eenin(템su및4x(4는smx)dsize_t입니다. (에도 8바이트를 합니다.)%z), , clock_t?완벽한 방법은 없는 것 같습니다.clock_t정수 또는 부동 소수점일 수 있습니다. clock_t는 부동 소수점 유형일 수 있습니다. Bastien Leonard가 POSIX에 대해 언급한 바와 같이, C99 N1256 초안 7.23.1/3은 다음과 같이 말합니다. [clock_tis..

programing 2023.09.10

함수 반환 자체

함수 반환 자체 유형 을 할 할 을 선언할 수 있습니까?func_t유형을 그을는지지는ht을,s그func_t? 즉, 함수가 스스로 돌아오는 것이 가능한 것일까요? // func_t is declared as some sort of function pointer func_t foo(void *arg) { return &foo; } 아니면 내가 사용해야 할까요?void *그리고 타입캐스팅?아니요. C에서는 재귀 함수 유형을 선언할 수 없습니다.구조(또는 조합) 내부를 제외하고는 C에서 재귀형을 선언할 수 없습니다. .void *책,void *는 객체에 대한 포인터만 보유하고 함수에 대한 포인터는 보유하지 않습니다.수 있는 것과수는과할를수과nt는gvoid *는 확장자로만 사용할 수 있습니다.가능한 구조의 해결책..

programing 2023.09.10

HRESULT의 예외: 0x80131047

HRESULT의 예외: 0x80131047 프로젝트를 디버그하려고 할 때마다 다음과 같은 문제가 발생합니다. 프랑스어로 되어 있어요, 여기 제 번역본이 있어요 "프로젝트를 실행하는 중 오류 발생:어셈블리 "DBZu's Fury Text Editor" 또는 해당 종속성 중 하나를 로드하지 못했습니다.지정된 어셈블리 이름 또는 코드베이스가 잘못되었습니다. (HRESULT의 예외: 0x80131047)" 누가 도와줄 수 있습니까?사용하시는 경우Assembly.Load()파일을 로드하려면 다음과 같이 변경합니다.Assembly.LoadFile()대신.Project > Project Properties > Name > 아포스트로피 제거 (")'") 이름에서 따온 것이고, 효과가 있을 겁니다.나의 경우처럼 반드시 ..

programing 2023.09.10

문자 포인터에 malloc을 사용할 때

문자 포인터에 malloc을 사용할 때 저는 특히 말로콘 문자 포인터를 언제 사용해야 하는지에 초점을 맞추고 있습니다. char *ptr; ptr = "something"; ...code... ...code... ptr = "something else"; 이처럼 사소한 것에 malloc이 필요할까요?그렇다면 왜?그렇지 않다면 문자 포인터는 언제 필요합니까?다른 사람들이 지적한 바와 같이, 단지 다음을 수행하기 위해 malloc을 사용할 필요는 없습니다. const char *foo = "bar"; 그 이유는 바로 그것 때문입니다.*foo 가 포인터 — 초기화할 때foo당신은 문자열의 복사본을 만드는 것이 아니라, 단지 어디에 있는지를 가리키는 것일 뿐입니다."bar"실행 파일의 데이터 섹션에 저장됩니다...

programing 2023.09.10
반응형