반응형

C 28

단일 스레드, 비OS, 임베디드 애플리케이션에서 글로벌 변수가 무엇입니까?

단일 스레드, 비OS, 임베디드 애플리케이션에서 글로벌 변수가 무엇입니까? 글로벌 변수를 사용하는 것에 대한 대부분의 반대 의견은 여러 스레드, 스레드 안전 등의 문제를 언급하기 때문에 타당합니다. 하지만 OS가 아닌 소규모의 단일 스레드 사례에서는 어떤 반대 의견이 있습니까?저의 경우, 저는 "C"에 내장된 시스템을 쓰고 있습니다.저도 그 제품의 유일한 개발자입니다. 글로벌 변수를 제거하면 코드가 더 좋아지는 이유는 무엇입니까? (여러 응답을 읽은 후 이 시스템에는 동적 메모리 할당(예: malloc)이 없다는 점도 지적했어야 했습니다.모든 메모리는 컴파일 시 정적으로 할당됩니다.)그럴 리가 없어요. 글로벌 변수와 관련된 두 가지 근본적인 문제는 네임스페이스를 혼란스럽게 하는 것이며, "아무도" 이 변..

programing 2023.07.31

memcpy 구현을 제공하는 방법

memcpy 구현을 제공하는 방법 저는 베어 메탈 코드를 작성하려고 합니다.memset- 스타일 루프 포함: for (int i = 0; i < N; ++i) { arr[i] = 0; } 그것은 GCC로 컴파일되고 GCC는 그것을 전화로 바꿀 수 있을 만큼 충분히 똑똑합니다.memset()불행하게도 그것은 베어 메탈이기 때문에 나는 가지고 있지 않습니다.memset()(일반적으로 libc에서) 링크 오류가 발생합니다. undefined reference to `memset' 이러한 전환을 수행하는 최적화는 다음과 같습니다. 라이브러리에 대한 호출로 코드를 생성할 수 있는 패턴의 루프 배포를 수행합니다.이 플래그는 -O2 이상에서 기본적으로 활성화됩니다.-fprofile-use그리고.-fauto-profi..

programing 2023.07.31

제온을 위한 gcc 최적화 플래그?

제온을 위한 gcc 최적화 플래그? Xeons에 최적화할 때 어떤 gcc 컴파일러 플래그를 사용할 것인지 당신의 입력을 원합니다. 운치나 행진곡에는 '제온'이 없는데 어떤 것이 가장 가까운가요?최근 GCC/Xeon에 대한 업데이트입니다. Sandy-Bridge 기반 Xeon(E3-12xx 시리즈, E5-14xx/24xx 시리즈, E5-16xx/26x/46xx 시리즈). -march=corei7-avx= 4.9.0의 경우. 그러면 Sandy Bridge에 대한 AES 및 PCLMUL 명령 집합뿐만 아니라 Advanced Vector Extensions 지원이 활성화됩니다.다음은 GCC i386/x86_64 옵션 페이지의 개요입니다. ..

programing 2023.07.31

메모리를 2의 거듭제곱으로 할당하는 것이 더 나을까요?

메모리를 2의 거듭제곱으로 할당하는 것이 더 나을까요? 가 용할때를 사용할 때.malloc()메모리를 할당하기 위해서, 우리는 2의 거듭제곱의 크기를 주어야 합니까?아니면 우리가 필요한 정확한 사이즈를 주는 건가요? 맘에 들다 //char *ptr= malloc( 200 ); char *ptr= malloc( 256 );//instead of 200 we use 256 2의 거듭제곱인 사이즈를 주는 것이 더 낫다면, 그 이유는 무엇입니까?왜 더 나은가요? 감사해요. 편집 제가 혼란스러워 하는 이유는 Joel의 블로그 Back to Basics의 인용문을 따른 것입니다. 스마트 프로그래머는 크기가 2배인 메모리 블록을 항상 할당하여 malloc의 잠재적인 중단을 최소화합니다.4바이트, 8바이트, 16바이트..

programing 2023.07.16

2D 배열을 매개 변수로 전달할 때 열 크기를 지정해야 하는 이유는 무엇입니까?

2D 배열을 매개 변수로 전달할 때 열 크기를 지정해야 하는 이유는 무엇입니까? 매개 변수가 다음과 같을 수 없는 이유 void example(int Array[][]){ /*statements*/} 배열의 열 크기를 지정해야 하는 이유는 무엇입니까?예를 들면, 3. void example(int Array[][3]){/*statements*/} 교수님이 필수라고 하셨는데, 학교가 시작하기 전에 코딩을 하고 있었는데 이것을 매개변수로 만들었을 때 구문적이거나 의미적인 오류가 없었다는 것을 기억했습니다.아니면 제가 뭔가를 놓쳤나요? 매개 변수를 설명할 때 배열은 항상 첫 번째 요소에 대한 포인터로 쇠퇴합니다. 이 같과이선언배로 된 배열을 할 때int Array[3]void foo(int array[])그것..

programing 2023.07.06

구조 패킹은 결정론적입니까?

구조 패킹은 결정론적입니까? 예를 들어, 두 개의 동등한 구조가 있다고 가정합니다.a그리고.b다른 프로젝트: typedef struct _a { int a; double b; char c; } a; typedef struct _b { int d; double e; char f; } b; 만약 내가 어떤 지시도 사용하지 않았다고 가정한다면.#pragma pack그리고 이 구조체들은 동일한 최적화 설정을 가진 동일한 아키텍처에 대해 동일한 컴파일러에서 컴파일됩니다. 변수들 사이에 동일한 패딩이 있을까요?컴파일러는 결정론적입니다. 그렇지 않았다면 별도의 컴파일이 불가능했을 것입니다.▁with▁the 두 개의 다른 단위struct선언은 § 6.2.7/1에 의해 보장되며, 호환되는 유형 및 복합 유형. 또한 동일..

programing 2023.06.26

Mac OS X에서 libusb를 설정하는 방법은 무엇입니까?

Mac OS X에서 libusb를 설정하는 방법은 무엇입니까? 맥에서 libusb를 사용하여 사용자 공간 장치 드라이버를 만들고 싶은데 어디서부터 시작해야 할지 헷갈립니다.SDK 설치 프로그램(http://www.ellert.se/twain-sane) 에서 입수한)에는 컴퓨터 어디에서도 찾을 수 없는 예제에 대한 내용이 나와 있습니다. OS X에서 개발을 위해 libusb를 어떻게 설정하는지 설명해주실 수 있나요?Xcode를 사용해도 됩니까?코드에 무엇을 포함해야 합니까?brew install libusb-compat OSX Yosemite 10.10 작업가장 쉬운 방법: brew install libusb 홈브루는 놀랍고 맥을 사용하는 모든 개발자들에게 추천합니다.저는 위 웹사이트에서 SDK를 설치하려..

programing 2023.06.21

여러 C/C++ 라이브러리를 하나로 결합하려면 어떻게 해야 합니까?

여러 C/C++ 라이브러리를 하나로 결합하려면 어떻게 해야 합니까? 프로젝트에 10개의 링크 라이브러리를 추가하거나 그 중 8개의 링크 라이브러리를 사용해야 하는 것에 지쳤습니다.libpng.a, libz.a, libjpeg.a와 같은 기존 라이브러리를 하나의 라이브러리로 결합하고 싶습니다.그게 가능한가요?.lib 라이브러리를 결합하는 것은 어떻습니까?다음을 사용하여 각 라이브러리에서 개체 파일을 추출할 수 있습니다. ar x 그리고 나서 그들 모두를 새로운 도서관으로 병합합니다. ar cs GNU 툴체인이 있는 Linux, MinGW 또는 Cygwin의 경우: ar -M

programing 2023.06.11
반응형