C 33

MinGW를 사용하여 C 프로그램을 명령줄에서 컴파일하는 방법은?

MinGW를 사용하여 C 프로그램을 명령줄에서 컴파일하는 방법은? 기본적인 C 프로그램을 컴파일하려면 윈도우 7의 명령줄에 어떤 명령을 입력해야 합니까? .c 파일을 컴파일하기 위해 명령 프롬프트에 무엇을 입력하는지 문자 그대로 궁금합니다. 노력했습니다. > gcc foo.c 하지만 이렇게 적혀있습니다. 'gcc' is not recognized as an internal or external command, operable program or batch file. 저도 해봤습니다. > minGW foo.c 하지만 난 다시 돌아왔습니다. 'minGW' is not recognized as an internal or external command, operable program or batch file. ..

programing 2023.10.16

constchar* 변수의 값을 변경할 수 있는 이유는 무엇입니까?

constchar* 변수의 값을 변경할 수 있는 이유는 무엇입니까? C의 다음 코드가 작동하는 이유는 무엇입니까? const char* str = NULL; str = "test"; str = "test2"; str은 일정한 문자를 가리키는 포인터인데 왜 다른 문자열 리터럴을 할당할 수 있습니까?또한 str이 수정되는 것을 어떻게 보호할 수 있습니까?예를 들어 나중에 str을 더 긴 문자열에 할당하여 메모리의 다른 부분에 쓰기만 하면 문제가 발생할 수 있습니다. 시험에서 과제물 전후로 str의 기억 주소를 출력했는데도 바뀐 적이 없다는 것을 덧붙여야겠습니다.그래서 str이 성소를 가리키는 포인터임에도 불구하고 메모리는 실제로 수정되고 있습니다.혹시 이것이 C와의 레거시 문제가 아닌지 궁금합니다.포인터가 ..

programing 2023.10.16

malloc()는 연속된 메모리 블록을 할당합니까?

malloc()는 연속된 메모리 블록을 할당합니까? 아주 오래된 학교 프로그래머가 쓴 코드 조각이 있어요 :-) . 이런식으로 진행됩니다. typedef struct ts_request { ts_request_buffer_header_def header; char package[1]; } ts_request_def; ts_request_def* request_buffer = malloc(sizeof(ts_request_def) + (2 * 1024 * 1024)); 프로그래머는 기본적으로 버퍼 오버플로우 개념을 연구하고 있습니다.암호가 의심스럽다는 거 알아요.그래서 제 질문은 다음과 같습니다. malloc는 항상 연속된 메모리 블록을 할당합니까? 이 코드에서 블록이 연속되지 않으면 코드가 크게 실패하기 ..

programing 2023.10.16

헤더 파일의 정적 인라인 함수

헤더 파일의 정적 인라인 함수 최근에 오픈소스 C 코드를 좀 더 읽어보려고 시도하고 있습니다.제가 취미 프로젝트에서 채택하고 있는 일반적인 패턴은 다음과 같습니다. 제 C 파일에는 정적이거나 내보내는 기능이 있습니다.내보낸 함수만 헤더 파일에 저장됩니다.개체 범위 내에서만 사용되는 전역 변수도 정적 전역 변수로 사용됩니다. 나의 질문은 의 유용성과 동기에 관한 것입니다.static inline헤더 파일 내부의 기능.내가 온라인에서 읽은 바로는, 사용하지 않는 것으로.static키워드는 다중 정의 오류를 야기하며 그것이 함수를 단지 정의하지 않는 이유입니다.inline. 그러나 이 기능은 다른 개체가 사용할 수 있도록 내보냄을 의미합니까?만약 그렇다면 그냥 이 함수를 C 파일에 정의하고 헤더 파일을 통해 ..

programing 2023.10.11

c에 데이터 유형이 없는 변수 선언

c에 데이터 유형이 없는 변수 선언 이 점에서.c프로그램. a=8; main() { printf("%d", a); } 변수 a는 어떠한 데이터 형식도 없이 선언되었지만 여전히 이 프로그램은 성공적으로 컴파일되어 원하는 출력을 제공합니다. 출력 :: 8 그것을 하나에서 봅니다. 그러나 main 내부에 동일한 변수를 선언하면 컴파일 오류가 발생합니다. main() { a=8; printf("%d", a); } 출력 :: prog.c:2: warning: return type defaults to ‘int’ prog.c: In function ‘main’: prog.c:3: error: ‘a’ undeclared (first use in this function) prog.c:3: error: (Each un..

programing 2023.10.06

strpbrk는 무엇의 약자입니까?

strpbrk는 무엇의 약자입니까? 저는 C에서 낮은 수준의 스트링 작업을 하면서 가끔 사용해 보았지만, 그것이 무엇을 의미하는지는 알 수 없었습니다.저는 항상 머리 속에서 "지르개 짖는 소리"라고 발음해왔지만, 그것은 결코 옳게 느껴지지 않습니다. 만큼 명확한 을 가지고 strchr( 문자열 문자) 또는strspn( 문자열 스팬). 원래의 표준 라이브러리 함수들이 포트란과 호환성을 유지하기 위해 모두 7자 이름으로 제한되었거나, 원래 C 표준에서 7자보다 긴 식별자들이 7자 접두사 같은 것으로 간주되었기 때문에 어딘가에서 읽었던 것을 어렴풋이 기억합니다.누가 이것을 확인/거부/명확히 해줄 수 있습니까?다음 대화에서는 "String Pointer Break"을 제안합니다. http://www.cpptal..

programing 2023.10.06

C/C++에서 부호 없는 오른쪽 시프트(>>>)를 수행하려면 어떻게 해야 합니까?

C/C++에서 부호 없는 오른쪽 시프트(>>>)를 수행하려면 어떻게 해야 합니까? C/C++에서 부호 없는 오른쪽 시프트(>>>)를 수행하려면 어떻게 해야 합니까?C에서 부호 없는 이동을 하려면 부호 없는 유형에 대해 이동만 수행합니다. unsigned int result = (unsigned int)valueToBeShifted >> shiftAmount; 다음과 같은 보장이 없다는 것을 참고하십시오.>>서명된 유형에서 C의 서명된 이동을 제공합니다. 이것이 구현 정의된 동작입니다.그러나 대부분의 일반적인 구현은 유형이 서명된 경우 서명된 이동을 생성합니다.>>>부호 없는 오른쪽 시프트이므로 C에서는 다음과 같을 것으로 생각합니다. unsigned int foo; unsigned int bar = fo..

programing 2023.10.06

n++가 n=n+1보다 빨리 실행되는 이유는 무엇입니까?

n++가 n=n+1보다 빨리 실행되는 이유는 무엇입니까? C언어로, 왜?n++보다 빨리 실행n=n+1? (int n=...; n++;) (int n=...; n=n+1;) 오늘 수업에서 우리 선생님이 그 질문을 하셨습니다.(이것은 숙제가 아닙니다)'석기시대' 컴파일러 작업을 하고 있다면 그럴 겁니다 "석기 시대"의 경우: ++n보다 빠릅니다.n++보다 빠릅니다.n=n+1 기계는 보통.increment x게다가add const to x 의 경우n++, 2개의 메모리만 액세스할 수 있습니다(읽기 n, incn, 쓰기). 의 경우n=n+1, 3개의 메모리 액세스(읽기 n, 읽기 const, add n and const, 쓰기)가 가능합니다. 하지만 오늘의 컴파일러는 자동으로 변환됩니다.n=n+1로.++n, 그..

programing 2023.10.01

WEXIT STATUS(상태)는 무엇을 반환합니까?

WEXIT STATUS(상태)는 무엇을 반환합니까? 나는 어떻게 그 방법을 이해할 수 있도록 노력하고 있습니다.WEXITSTATUS(status)작동해요. 저는 그 반환 값이WEXITSTATUS(status)가 변수에 추가되고 있습니다. 토막글은 다음과 같습니다. waitpid(-1, &status, 0); counter += WEXITSTATUS(status); 다음의 반환 값은 어떻게 됩니까?WEXITSTATUS계산이 됩니까?WEXITSTATUS(stat_val)는 매크로입니다(따라서 실제로는 무언가를 "되돌리는" 것이 아니라 "evaluates"합니다). 작동 방식에 대해서는 머리글에서 찾아보는 것이 좋습니다.#includedvia )을(를) 사용하는 C 컴파일러와 함께 제공됩니다. 이 매크로의 구..

programing 2023.10.01

cst디오 스트림 vs ios 스트림 스트림 스트림?

cst디오 스트림 vs ios 스트림 스트림 스트림? 의 .ios_base::sync_with_stdio- ,이면)다 할 수 .iostream 및 C++및 C+에서cstdio표준 C의 일부인 스트림. 생각했어요stdout,stderr그리고.stdinC에서 기본적으로 iostreams 클래스에서 C++의 객체 집합으로 랩핑되었습니다.하지만 만약 그들이 서로 동기화되어야 한다면, 이것은 C++의 것을 의미할 것입니다.iostream클래스는 C의 주위에 포장지가 아닙니다.stdin타. 제가 이거 때문에 좀 혼란스러운데요?C++의 ios 스트림과 C의 stdio가 어떻게 추상화 수준이 다를 뿐 아니라 정확히 같은 일을 하는 다른 것인지 누가 설명해 줄 수 있습니까?저는 그들이 똑같은 줄 알았어요!? 어떻게 그들..

programing 2023.09.21