반응형

C 49

클랜 포맷이 내 코드를 깨뜨릴 수 있습니까?

클랜 포맷이 내 코드를 깨뜨릴 수 있습니까? ~하듯이clang-format코드를 다시 포맷하기 위한 도구인데, 이러한 포맷이 작동 코드를 깨거나 최소한 작동 방식을 변경할 수 있습니까?코드의 작동 방식을 바꿀 수 없는 어떤 종류의 계약이 있습니까? 는 가 많습니다.clang-format 줄들이 이라는 것을 의미합니다 이것은 코드의 많은 줄이 바뀔 것이라는 것을 의미합니다.A로가 없습니다.clang-format이 프로세스를 크게 단순화할 수 있습니다. 저는 그렇게 말할 거예요.clang-format코드의 작동 방식은 변경되지 않습니다.그러나 이것이 보장될 수 있을지 100% 확신할 수는 없습니다.단답: 예. clang-format도구가 있습니다.-sort-includes선택. 순서 #include명령어는 ..

source 2023.09.24

c: 공극 크기*

c: 공극 크기* C의 void* 포인터가 좀 헷갈리네요.특히 이 질문을 읽은 후에:(일부 포인터)의 크기는 항상 4와 같습니까? 한 사람은 (int *)의 크기 == (double *)의 크기가 보장되지 않는다고 말합니다. 제 질문은: (void*) > = (다른 포인터 유형)의 크기 보장이 있습니까?다시 말해, 항상 some_type* 포인터를 void* 포인터에 할당한 다음 some_type*로 반환할 수 있습니까?데이터 포인터만.void *는 임의의 데이터 포인터는 보유할 수 있지만 함수 포인터는 보유할 수 없습니다. 여기 C FAQ가 있습니다. void *'s는 개체(즉, 데이터) 포인터만 보유할 수 있으며 함수 포인터를 void * 형식으로 변환하는 것은 휴대용이 아닙니다. (일부 컴퓨터에서는..

source 2023.09.24

C 전처리기 연결이 #정의 바깥쪽에 있음

C 전처리기 연결이 #정의 바깥쪽에 있음 왜 우리가 토큰 연결을 외부에서 사용할 수 없는지 궁금했습니다.defines. 이것은 제가 이것들을 동시에 원할 때 나타납니다. 라이브러리의 충돌 없는 이름 지정(또는 "일반"의 경우) 가능성; 때; define 전체 입니다가 .define사용되었습니다. 어떤 사람들은 예를 원할 수도 있습니다(실제 질문은 그 아래에 있습니다). lib.inc: #ifndef NAME #error includer should first define NAME #endif void NAME() { // works } // void NAME##Init() { // doesn't work // } main.c: #define NAME conflictfree #include "lib.inc..

source 2023.09.19

Secure C 및 Secure C 관용구 쓰기

Secure C 및 Secure C 관용구 쓰기 "평범한 사람들은 자유로워지고 싶어하지 않습니다.그는 그저 안전하기를 원할 뿐입니다." - H.L. 멘켄 나는 매우 안전한 C를 쓰려고 시도하고 있습니다.아래에는 제가 사용하는 몇 가지 기술이 나열되어 있으며 제가 생각하는 것만큼 안전한지 물어봅니다.부디 주저하지 마시고 제 코드/선개념을 갈기갈기 찢어버리세요.가장 사소한 취약점이라도 찾아내거나 새로운 아이디어를 알려주는 답변은 높은 평가를 받을 것입니다. 스트림에서 읽기: GNUC 프로그래밍 튜토리얼 getline에 따르면: getline 기능은 reloc 기능을 통해 필요에 따라 메모리 블록을 자동으로 확장하므로 공간이 부족하지 않습니다. getline이 안전한 이유 중 하나입니다.[..] 입력 라인이 ..

source 2023.09.19

C에서 컴파일러 작성자에게 'auto' 키워드가 유용한 이유는 무엇입니까?

C에서 컴파일러 작성자에게 'auto' 키워드가 유용한 이유는 무엇입니까? 저는 현재 "Expert C Programming - Deep C Secrets"를 읽고 있는데, 방금 이것을 발견했습니다. 지정자 auto필요 없습니다.컴파일러 작성자가 심볼 테이블에 항목을 입력하는 것은 대부분 의미가 있습니다. 즉, "이 스토리지는 컴파일 타임에 정적으로 할당되거나 힙에 동적으로 할당되는 것이 아니라 블록에 입력할 때 자동으로 할당됩니다."라고 말합니다.auto함수 내부에서만 사용할 수 있기 때문에 다른 모든 프로그래머에게는 거의 의미가 없지만 함수의 데이터 선언에는 기본적으로 이 속성이 있습니다. 여기서 같은 질문을 하시는 분이 있던데 답이 없고 댓글로 주는 링크는 왜 C에 그런 키워드가 있는지, B에게 물..

source 2023.09.09

C에서 C++ 테이블 인라인 정의

C에서 C++ 테이블 인라인 정의 저는 C에 컴파일과 동작이 정확한 코드를 가지고 있으며 C++에 유사한 코드를 사용하고 싶습니다. static const char* aTable[12] = { [4]="seems", [6]=" it ", [8]="works",}; int main(){ printf("%s%s%s", aTable[4],aTable[6],aTable[8]); return 0; } 이제 제가 이걸 A에 넣으면.c줄로 묶어서 정리하는gcc그건 효과가 있다.하지만, 제가 이걸 A에..cpp파일로 작성하여 컴파일합니다.g++, 다음 오류가 발생합니다. test_cpp.cpp:5:3: error: expected identifier before numeric constant test_cpp.cpp:5..

source 2023.09.09

포크()와 vfork()의 차이점은 무엇입니까?

포크()와 vfork()의 차이점은 무엇입니까? 와의 차이점은 무엇입니까? 그것은vfork()와 같이 돌아오다.fork().의 .vfork때 전체 를 복사하는 이었습니다.exec*어린 시절에왜냐면exec*하위 프로세스의 전체 이미지를 대체하므로 상위 프로세스의 이미지를 복사할 필요가 없습니다. if ((pid = vfork()) == 0) { execl(..., NULL); /* after a successful execl the parent should be resumed */ _exit(127); /* terminate the child in case execl fails */ } 다른종류용도는로의,는,vfork위험하고 예측할 수 없습니다. 리눅스를 에서는 리눅스의 .vfork길 때문에 사라졌습니다...

source 2023.08.26

C 매크로: #if 동일성 확인

C 매크로: #if 동일성 확인 매크로에서 숫자가 동일한지 확인할 수 있는 방법이 있습니까? 저는 다음과 같은 것을 하고 싶습니다. #define choice 3 #if choice == 3 .... #endif #if choice == 4 ... #endif C 매크로는 이런 것들을 지원합니까?코드를 쓰는 또 다른 방법은 체인을 사용합니다.#elif지시사항: #if choice == 3 ... #elif choice == 4 ... #else #error Unsupported choice setting #endif 참고: 만약choice아닙니다#defined컴파일러(프로세서)는 값을 갖는 것으로 취급합니다.0.정말로 그것은 효과가 있을 것입니다.http://gcc.gnu.org/onlinedocs/cp..

source 2023.08.26

clock_gettime()의 다양한 클럭 이해

clock_gettime()의 다양한 클럭 이해 안녕하세요. 저는 그것을 사용하고 싶었습니다.clock_gettime()내 코드의 성능을 측정하는 기능. 기능에 사용되는 다른 종류의 시계들과 man page 설명의 차이를 이해할 수 없습니다. CLOCK_REALTIME, CLOCK_PROCESS_CPUTIME_ID CLOCK_THREAD_CPUTIME_ID 누가 이 시계들이 각각 무엇을 하는지 설명해 줄 수 있습니까?CLOCK_REALTIME실제 벽 클럭 시간을 보고합니다. CLOCK_MONOTONIC상대적 실시간 측정을 위한 것입니다.실제 시간 흐름과 동일한 속도로 진행되지만 시스템 클럭에 대한 수동 또는 자동(NTP) 조정으로 인한 중단은 발생하지 않습니다. CLOCK_PROCESS_CPUTIME_I..

source 2023.07.26

Windows에서 GTK+ 3.0을 어떻게 설치합니까?

Windows에서 GTK+ 3.0을 어떻게 설치합니까? 코드블록 Win7에서 GTK+ 3.0을 설정하려고 합니다.정확한 방법을 찾는 데 어려움을 겪고 있습니다. GTK 웹사이트는 당신을 msys2로 안내합니다.한때 GTK 사이트에서 더 이상 존재하지 않는 일체형 Windows 번들에 대한 직접 다운로드가 있었던 것 같습니다. 지침에 따라 msys2를 설치하고 업데이트했지만 GTK가 지시하는 설치된 파일이나 mysys 웹 사이트에서 GTK+에 대한 참조가 보이지 않습니다. 단순해야 할 일을 하는 것은 불필요하고 어리석게도 불분명하다는 점에서 매우 진부해 보입니다.아마도 뭔가를 놓쳤을 수도 있지만 압축된 폴더를 다운로드하고 경로를 추출하고 설정하는 것만큼 간단하지 않아야 합니까? 이 속도라면 C++을 더 빨..

source 2023.07.26
반응형