반응형

C 100

소스 및 헤더 디렉토리가 별도인 Make 파일을 작성하는 방법?

소스 및 헤더 디렉토리가 별도인 Make 파일을 작성하는 방법? 이 자습서에 따르면... 저는 소스 파일 2개와 헤더 파일 1개를 가지고 있습니다.자습서처럼 별도의 디렉토리에 배치하고 싶습니다. 그래서 이 프로젝트를 설정했습니다. . ├── include │ └── hellomake.h ├── Makefile └── src ├── hellofunc.c └── hellomake.c 파일 만들기: IDIR =../include CC=gcc CFLAGS=-I$(IDIR) ODIR=obj LDIR =../lib _DEPS = hellomake.h DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS)) _OBJ = hellomake.o hellofunc.o OBJ = $(patsubst %,$(O..

source 2023.10.26

C 같은 언어로 ++i++를 할 수 없는 이유는 무엇입니까?

C 같은 언어로 ++i++를 할 수 없는 이유는 무엇입니까? 농담 반 진담 반 : 왜 안 돼요?++i++C 같은 언어로, 특히 C#로? 값을 증가시켜 표현에 사용한 다음 다시 증가시킬 것으로 예상합니다."It's not alvalue"라는 짧은 대답은 맞지만, 그것은 아마도 단지 질문을 구걸하는 것일 것입니다.왜 가치가 없는 거지?혹은 C#에서 말하는 변수. 그 이유는 케이크를 먹을 수 없기 때문입니다.논리적으로 해결: 먼저, C#에서 ++ 연산자의 의미는 후소나 접두사를 막론하고 "이 변수의 값을 취하고, 값을 증가시키고, 새로운 값을 변수에 할당하고, 결과적으로 값을 생성합니다."입니다.결과로 생성된 값은 후처리인지 접두사인지에 따라 원래 값 또는 증분 값입니다.그러나 어느 쪽이든 가치를 창출합니다...

source 2023.10.16

여러 숫자의 기하평균을 계산하는 효율적인 방법

여러 숫자의 기하평균을 계산하는 효율적인 방법 값이 선험적으로 제한되지 않는 큰 숫자 집합의 기하평균을 계산해야 합니다.순진한 방법은 double geometric_mean(std::vector const&data) // failure { auto product = 1.0; for(auto x:data) product *= x; return std::pow(product,1.0/data.size()); } 는 누적된 로 인해 할 수 .product 고:long double실제로 이 문제를 피하지는 않습니다.)다음 옵션은 로그를 요약하는 것입니다. double geometric_mean(std::vector const&data) { auto sumlog = 0.0; for(auto x:data) sum_l..

source 2023.10.16

공유 라이브러리를 정적 라이브러리로 변환하시겠습니까?

공유 라이브러리를 정적 라이브러리로 변환하시겠습니까? 공유 라이브러리(someLib.so )를 정적 라이브러리로 변환할 수 있습니까?(some Lib.a)아니요. (적어도 ELF 공유 라이브러리의 경우에는)공유 라이브러리는 단순 개체이므로 공유 개체를 의미합니다.정적 라이브러리는 개체의 모음입니다.공유 라이브러리를 구축하는 과정에서 여러 개체를 결합하면 개체를 검색하는 데 필요한 일부 정보를 잃게 됩니다.공유 라이브러리의 소스 코드가 있는 경우 YES. 공유 라이브러리의 소스 코드가 없는 경우 아니오.언급URL : https://stackoverflow.com/questions/6302954/convert-shared-library-to-static-library

source 2023.10.16

BYTE 데이터 유형을 정의하는 C/C++ 헤더 파일은 무엇입니까?

BYTE 데이터 유형을 정의하는 C/C++ 헤더 파일은 무엇입니까? 이 선언과 함께 헤더를 포팅합니다. struct tMaterialInfo { char strName[255]; // the texture name char strFile [255]; // the texture BYTE color [3]; // the color of the object }; 헤더에는 다음과 같은 것들이 있습니다. #include #include #include #include #include #include #include // Header File For The OpenGL32 Library #include// Header File For The GLu32 Library #include 그 바이트는 어디서 나오는 거지?..

source 2023.10.11

__libc_start_main에서 무슨 일이 일어나고 있는 거지?

__libc_start_main에서 무슨 일이 일어나고 있는 거지? 고급 코드 -> 실행 파일의 단계를 정말로 이해하려고 노력하고 있습니다.하지만 어려움이 좀 있습니다. 제가 빈칸을 써놨습니다.int main() {}C 파일을 작성하고 다음을 통해 분해를 해독하려고 합니다.objdump -d. 다음과 같은 일이 벌어지고 있습니다. 인에_start, 선형 설정, 스택에서 인수 푸시, 호출__libc_start_main 인에__libc_start_main, 첫번째 행은.jmp *0x8049658 단, 사용시objdump -R이전 기록을 확인하기 위해, 그 값을 확인합니다.0x8049658가__libc_start_main그 자체! 제가 뭘 놓쳤는지.. 편집: 출처의 일부입니다. 080482c0 : 80482c..

source 2023.10.06

메모리를 영점화하기

메모리를 영점화하기 gcc 4.4.4 C89 나는 단지 대부분의 C 프로그래머들이 메모리를 제로로 만들고 싶을 때 무엇을 하는지 궁금합니다. 예를 들어, 저는 1024바이트의 버퍼를 가지고 있습니다.가끔은 이렇게 하죠. char buffer[1024] = {0}; 그러면 모든 바이트가 0이 됩니다. 하지만 이렇게 선언하고 memset을 사용하면 되나요? char buffer[1024]; . . memset(buffer, 0, sizeof(buffer)); 메모리를 제로로 만들어야 하는 진짜 이유가 있습니까?그것을 하지 않음으로써 일어날 수 있는 최악의 상황은 무엇입니까?일어날 수 있는 최악의 상황?NULL이 종료되지 않은 문자열이나 버퍼의 일부에 인쇄한 후에 오른쪽에 있는 모든 것을 상속하는 정수를 (지..

source 2023.10.06

malloc에서는 왜 brk를 사용합니까?왜 그냥 mmap을 사용하지 않습니까?

malloc에서는 왜 brk를 사용합니까?왜 그냥 mmap을 사용하지 않습니까? 의 :malloc사용하다brk/sbrkOS에 메모리를 청구하는 주요 수단으로 사용됩니다.e를 사용합니다.mmap큰 할당을 위해 청크를 얻는 것입니다.까를 하는 것에 ?brkmmap요?요로 mmap? (참고: 사용합니다.sbrk그리고.brk한 Linux다에 서는 서로 할 수 있습니다.brk.) 여기 로, 를 glibc 를 하는 몇 .malloc: GNU C 라이브러리 참조 매뉴얼:GNU 할당자 :// : glibc : Malloc :// 과 같습니다.sbrk하는 데 mmap됩니다를 하는 데 됩니다.mmap또한 큰 객체("페이지보다 큰 much")에 대한 공간을 주장하는 데 사용됩니다. 힙 ( )로 )sbrk및 ) mmap됩니다..

source 2023.10.06

C99에서 이상한 배열 크기[*]와 [정적]는 얼마입니까?

C99에서 이상한 배열 크기[*]와 [정적]는 얼마입니까? C99 및 C11에서는 다음과 같은 기능 프로토타입이 유효합니다. void foo(int a[const *]); void bar(int a[static volatile 10]); 그 이상한 구독의 목적은 무엇입니까?*,static, 그리고 CV 예선? 정적으로 입력된 배열과 가변 길이 배열을 구분하는 데 도움이 됩니까?아니면 그냥 통사당일까요?매개 변수 배열 선언기에서 static void f(int a[static 10]); static여기에 매개 변수가 다음과 같이 표시됩니다.a에 대한 포인터입니다.int그러나 어레이 오브제(여기서a는 그것의 첫번째 요소에 대한 포인터)를 적어도 가지고 있습니다.10요소들. 컴파일러는 다음과 같이 추정할 권리..

source 2023.10.06

Vim [컴파일 및] 실행 바로 가기

Vim [컴파일 및] 실행 바로 가기 기본적으로 제가 원하는 것은 vim에서 현재 편집 중인 C, C++ 또는 Python 프로그램을 [컴파일하고] 실행할 수 있는 키보드 단축키입니다.입력 코드: when a shortcut key is pressed: if current_extension == 'c' then shell: gcc this_filename.c -o this_filename_without_extension if retcode == 0 then shell: ./this_filename_without_extension else if current_extension == 'cpp' then shell: g++ this_filename.cpp -o this_filename_without_exten..

source 2023.10.01
반응형