반응형

C 44

컴파일러는 무한 루프를 제거할 수 있습니까?

컴파일러는 무한 루프를 제거할 수 있습니까? 컴파일러 최적화를 통해 무한 루프를 삭제할 수 있으며, 이것은 어떤 데이터도 바꾸지 않습니다. while(1) /* noop */; 데이터 흐름 그래프 컴파일러를 분석하면 그러한 루프가 아무런 부작용 없이 "죽은 코드"라는 것을 알 수 있습니다. 무한 루프 삭제는 C90/C99 표준에서 금지되어 있습니까? C90이나 C99 표준은 컴파일러가 그러한 루프를 삭제하는 것을 허용합니까? 업데이트: "Microsoft C 버전 6.0은 본질적으로 이러한 최적화를 수행했습니다.". caf의 링크 참조. label: goto label; return 0; 로 변경될 예정입니다. return 0; C11은 C11 표준 초안 섹션에서 이 질문에 대한 답을 명확히 합니다.6...

it-source 2023.10.23

C 전처리기 매크로에 전처리기 지시사항이 포함되는 것이 가능합니까?

C 전처리기 매크로에 전처리기 지시사항이 포함되는 것이 가능합니까? 저는 다음과 같은 것을 하고 싶습니다. #define print_max(TYPE) \ # ifdef TYPE##_MAX \ printf("%lld\n", TYPE##_MAX); \ # endif print_max(INT); 이제.#ifdef함수 매크로에서 볼 수 있는 한 중첩된 전처리기 지시문은 허용되지 않습니다.무슨 생각 있어요? 업데이트: 그래서 이것은 불가능한 것 같습니다.런타임에 확인하는 해킹도 달성할 수 없는 것 같습니다.그래서 저는 다음과 같이 생각합니다. #ifndef BLAH_MAX # define BLAH_MAX 0 #endif # etc... for each type I'm interested in #define pri..

it-source 2023.10.18

(정규 객체에 대한 포인터와 반대로) 정칙 포인터는 어떤 용도로 사용됩니까?

(정규 객체에 대한 포인터와 반대로) 정칙 포인터는 어떤 용도로 사용됩니까? 물체를 고정시키기 위해 자주 포인터를 사용했어요, 예를 들면... const int *p; 수 합니다.p다를 통해 .p도 본이 있습니다 하지만 저는 컨스트 포인터에 대해서도 본 적이 있는데, 이렇게 선언했습니다. int* const p; 제가 알기로는 포인터 변수 자체가 일정하다는 것을 의미합니다. 하루 종일 가리키는 정수는 바꿀 수 있지만 다른 것을 가리키게 할 수는 없습니다. 그게 무슨 소용이 있겠습니까?임베디드 시스템을 위한 C 프로그램이나 동일한 메모리(멀티 프로세서 애플리케이션 공유 메모리)를 참조해야 하는 특수 목적 프로그램을 설계할 때는 일정한 포인터가 필요합니다. 예를 들어 32비트 MIP 프로세서에 LCD가 약간..

it-source 2023.10.13

C에서 메모리를 동적으로 할당해야 하는 이유는 무엇입니까?

C에서 메모리를 동적으로 할당해야 하는 이유는 무엇입니까? 동적 메모리 할당은 C 프로그래밍에서 매우 중요한 주제입니다.하지만 저는 이것이 우리가 무엇을 할 수 있게 하는지, 또는 왜 그것이 필요한지에 대한 좋은 설명을 찾을 수 없었습니다. 변수와 구조를 선언하고 malloc()을 절대 사용할 필요가 없는 것은 아닌가요? 참고 사항으로 다음과 같은 차이점은 무엇입니까? ptr_one = (int *)malloc(sizeof(int)); 그리고. int *ptr_one = malloc(sizeof(int)); 다음과 같은 경우 동적 메모리를 사용해야 합니다. 컴파일 시 사용할 최대 메모리 양을 결정할 수 없습니다. 매우 큰 개체를 할당하려고 합니다. 상한 크기가 고정되지 않은 데이터 구조(컨테이너)를 구축..

it-source 2023.10.13

C에서 문자열의 md5 해시를 생성하는 방법은?

C에서 문자열의 md5 해시를 생성하는 방법은? 다음과 같은 시제품으로 구성된 md5 코드를 찾았습니다. 해시하고 싶은 문자열을 어디에 넣어야 하는지, 어떤 기능을 호출해야 하는지, 해시가 끝나면 문자열을 어디서 찾을 수 있는지 등을 알아보려고 했습니다.uint32 buf[4]와 uint32 bits[2]가 구조에 무엇인지 헷갈립니다. struct MD5Context { uint32 buf[4]; uint32 bits[2]; unsigned char in[64]; }; /* * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious * initialization constants. */ void MD5Init(struct MD5Contex..

it-source 2023.10.13

C 프로그램을 효과적으로 구성하는 방법

C 프로그램을 효과적으로 구성하는 방법 먼저 C와 C++에서 상당한 경험을 쌓았다고 말씀드리겠습니다.하지만 저는 C에서 새로운 프로젝트를 시작하고 있고 객체 지향 언어(C# 및 C++)에서 너무 오랫동안 작업해왔기 때문에 절차 언어로 기능을 캡슐화하는 효과적인 방법을 생각하는 데 어려움을 겪고 있습니다.저의 첫 번째 생각은 단순히 OOO 지식에 의지하여 다음과 같이 구조화하는 것이었습니다. struct Foo { int x; char *y; }; struct Foo *new_Foo() { return (struct Foo *)malloc(sizeof(struct Foo)); } void Foo_member_function(struct Foo *foo, int z) { foo->x = z; } 하지만 그것..

it-source 2023.10.08

C/C++는 1개 국어입니까, 2개 국어입니까?

C/C++는 1개 국어입니까, 2개 국어입니까? C/C++는 1개 국어입니까, 2개 국어입니까?수업이 있는 C++는 그냥 C라고 들었습니다.그래요?C++는 1982-1983년에 C에서 분리되었으며, 이는 컴퓨터 시대에서 긴 시간입니다.그러나 C 표준 라이브러리 자체를 포함하여 C++ 호환성을 가진 C 라이브러리가 많이 있으며 프로그램의 꾸준한 스트림이 C에서 C++로 포팅됩니다.많은 C 프로그래머들은 C++와 호환되는 기능만 알고 있거나 사용합니다. 이들은 개별 위원회와는 다른 ISO 표준에 의해 정의됩니다.호환되는 기능을 정의할 때도 종종 다른 용어로 정의됩니다. C/C++를 언급하는 것은 이탈리아어/스페인어를 언급하는 것과 마찬가지로 타당합니다.그런 용어는 누구에게, 언제 사용하는지 주의해야 합니다...

it-source 2023.10.03

내장된 C 코드의 유지보수성을 위해 #c 소스 파일을 #포함해도 괜찮습니까?

내장된 C 코드의 유지보수성을 위해 #c 소스 파일을 #포함해도 괜찮습니까? 는 C C 는 를 ..c다른 소스 파일은 나쁜 관행으로 간주되지만, 유지보수에 도움이 될 수도 있다고 생각하는 상황이 있습니다. 요소를 큰 합니다를 합니다.#define지수를 유지하기 위해서 입니다. #define TOTO_IND 0 #define TITI_IND 1 … #define TATA_IND 50 static const MyElements elems [] = { {"TOTO", 18, "French"}, {"TITI", 27, "English"}, ..., {"TATA", 45, "Spanish"} } .#define구조 선언이 동기화된 것입니다., 다를 .#define따라서. 오류가 발생하기 쉽고 별로 마음에 들지 않..

it-source 2023.09.23

스택 및 힙의 메모리 할당

스택 및 힙의 메모리 할당 이것은 아주 기본적인 질문처럼 보일 수도 있지만, 제 머릿속에는 이런 것들이 있었습니다. 로컬 변수를 할당하면 스택으로 이동합니다.마찬가지로 동적 할당으로 인해 변수가 힙 상태로 전환됩니다.자, 제 질문은 이 변수가 실제로 스택이나 힙에 있는지 아니면 스택과 힙에 있는 참조일 뿐인지 입니다. 예를들면, 합니다를 한다고 가정해 .int i, . , .i스택에 할당됩니다.때.i가 스택에 중 요?힙에 대해서도 같은 질문입니다.무슨 말인지는 잘 모르겠지만 최선을 다해 대답해 보겠습니다. 합니다를 합니다.i스택에 저장됩니다. int i; 할 때 ㅇ&i스택의 실제 위치를 파악했습니다. 으로 무언가를 할 때malloc, 실제로 두 개의 데이터가 저장되어 있습니다.동적 메모리는 힙에 할당되고..

it-source 2023.09.23
반응형