반응형

c 68

gzip 파일이 압축되어 있는지 확인하는 방법은 무엇입니까?

gzip 파일이 압축되어 있는지 확인하는 방법은 무엇입니까? 압축되거나 압축되지 않을 수 있는 파일로 읽어야 하는 C/C++ 프로그램이 있습니다.zlib의 gzread()를 사용하여 압축 파일과 압축되지 않은 파일 모두에서 읽을 수 있다는 것을 알고 있습니다. 그러나 zlib 기능은 (성능상의 이유로) gzip 압축된 경우에만 사용하고 싶습니다. 그렇다면 C/C++에서 특정 파일이 gzip되어 있는지를 프로그램적으로 감지하거나 확인할 수 있는 방법은 없습니까?파일의 첫머리에 매직넘버가 있습니다.처음 두 바이트를 읽고 다음과 같은지 확인합니다.0x1f8b.오탐, 오탐, 오탐 중 어느 것을 선호하십니까? 아니면 오탐이 전혀 없는 것을 선호하십니까? (성능은 고갈됩니다...) RFC 1952: GZIP 파일 ..

programing 2023.11.04

C 프로그래머의 관점에서 ARM 아키텍처 간의 차이?

C 프로그래머의 관점에서 ARM 아키텍처 간의 차이? 저는 ARM을 위한 프로그래밍을 꽤 처음 해 봅니다.ARMv4, ARMv5, ARMv6 등과 같은 여러 아키텍처가 있다는 것을 알게 되었습니다.이것들의 차이점은 무엇입니까?그들은 다른 지시사항이나 행동을 가지고 있습니까? 가장 중요한 것은 제가 ARMv6용 C 코드를 컴파일하면 ARMv5에서 실행이 되나요?ARMv6에서 실행되는 ARMv5 코드는 어떻습니까? 아니면 커널 어셈블리 코드를 작성하는 경우에만 차이를 걱정해야 합니까?ARM 세계가 좀 지저분합니다. C 프로그래머들에게 있어 모든 ARM 아키텍처는 플랫 어드레싱 프로그래밍 모델과 함께 일반 32비트를 제공합니다.C 소스 코드를 사용하는 한 엔디안성과 성능에 대한 차이만 보일 수 있습니다.대부분..

programing 2023.11.04

_REENTRANT 플래그란 무엇입니까?

_REENTRANT 플래그란 무엇입니까? 우리가 사용하는 멀티스레드 프로그램을 아래와 같이 컴파일하는 것. gcc -lpthread -D_REENTRANT -o someprogram someprogram.c 깃발이 정확히 무엇입니까?-D_REENTRANT여기서 뭐해요?_REENTRANT를 정의하면 컴파일러가 C 라이브러리에 있는 여러 함수의 스레드 세이프(즉, 재진입) 버전을 사용하게 됩니다. 헤더 파일을 검색하여 정의된 경우에 어떤 일이 발생하는지 확인할 수 있습니다.libc 8.2 설명서에서 발췌: 매크로: _REENTRANT 매크로: _THREAD_SAFE 이 매크로들은 더 이상 쓸모가 없습니다.값 199506L로 _POSIX_C_SOURES를 정의하는 것과 동일한 효과가 있습니다. 매우 오래된 일..

programing 2023.11.04

C Macro - 정수 값을 문자열 리터럴로 가져오는 방법

C Macro - 정수 값을 문자열 리터럴로 가져오는 방법 이 질문에는 이미 다음과 같은 답변이 있습니다. 매크로 값 문자열화 (3개 답변) 닫힘6년 전에. GCC(AVR Studio)의 어셈블리 섹션의 일부인 문자열 리터럴에 #정의 정수 기호를 삽입할 값을 얻을 수 있습니까? 아래 asm() 블록 안에 있는 문자열 리터럴 안에 있는 "LED"를 48개로 교체했으면 합니다. #define LEDS 48 //I only want ONE mention of this number in the source int x = LEDS; //I'm using the value directly too void DrawFrame() { asm( "ldi R27, 0x00 \n\t" "ldi R26, 0x00 \n\t" "..

programing 2023.11.04

C에서 EOF 검출

C에서 EOF 검출 EOF가 발생할 때까지 사용자의 입력을 받기 위해 아래의 C 코드를 사용하고 있습니다만, 문제는 이 코드가 작동하지 않는다는 것입니다, 첫 번째 입력을 받은 후에 종료됩니다.이 코드에 무슨 문제가 있습니까? float input; printf("Input No: "); scanf("%f", &input); while(!EOF) { printf("Output: %f", input); printf("Input No: "); scanf("%f", &input); } EOF는 값(일반적으로 -1)을 가진 매크로일 뿐입니다.당신은 어떤 것을 시험해 봐야 합니다.EOF, 예를 들면 A의 결과와 같은getchar()불러. 스트림의 끝을 테스트하는 한 가지 방법은feof기능. if (feof(std..

programing 2023.10.30

열거형에서 사용하는 정수형을 변경하는 방법(C++)?

열거형에서 사용하는 정수형을 변경하는 방법(C++)? C++ 열거형이 있는 경우: enum Foo { Bar, Baz, Bork, }; 컴파일러에게 a를 사용하라고 어떻게 말해야 합니까?uint16_t실제로 열거된 값을 저장할 수 있습니까? 편집: GCC는 C++11을 구현할 때 이 기능을 지원합니까?C++98/03에서는 할 수 없습니다.C++11은 당신이 그것을 할 수 있게 하고, 없이. enum class다른 사람들이 계속 당신에게 말하는 것처럼 보입니다. enum EnumType : uint16_t { Bar, Baz, Bork, }; 다시 말하지만, 당신은 사용할 필요가 없습니다.enum class. 나쁜 생각은 아니지만, 그럴 필요는 없습니다. GCC는 C++11을 구현할 때 이 기능을 지원합니..

programing 2023.10.30

휴대용 isnan/isinf 기능을 만드는 방법

휴대용 isnan/isinf 기능을 만드는 방법 사용해왔습니다.isinf,isnan완벽하게 작동했던 리눅스 플랫폼의 기능들.하지만 이것이 OS-X에서 작동하지 않아서 사용하기로 결정했습니다.std::isinf std::isnan리눅스와 OS-X 둘 다에서 작동합니다. 하지만 인텔 컴파일러는 그것을 인식하지 못하고, http://software.intel.com/en-us/forums/showthread.php?t=64188 에 따르면 인텔 컴파일러의 버그인 것 같습니다. 그래서 이제 저는 번거롭지 않고 제 자신의 것을 정의하고자 합니다.isinf,isnan실행. 이것이 어떻게 이루어질 수 있는지 아는 사람? 편집: 이것을 내 소스코드로 만들어 버렸습니다.isinf/isnan일해 #include #incl..

programing 2023.10.30

C 유형 캐스트 및 추가 우선 순위

C 유형 캐스트 및 추가 우선 순위 다음 표현식의 우선 순위는 무엇입니까? item = (char*)heap + offset; 그런가요?(char*)(heap + offset)아니면((char*)heap) + offset?우선 순위 테이블에 따라 이진 추가를 캐스트합니다. 그건…((char *)heap) + offset. 깁스는 덧셈보다 훨씬 더 높은 우선 순위를 가집니다.((char*)heap) + offset 우선 순위가 훨씬 높기 때문에 캐스팅이 먼저 됩니다. C 우선 순위 테이블에서 이를 확인할 수 있습니다.언급URL : https://stackoverflow.com/questions/3354446/c-type-casts-and-addition-precedence

programing 2023.10.25

pthread에 대한 start_routine_create return void* 및 void*를 생성하는 이유

pthread에 대한 start_routine_create return void* 및 void*를 생성하는 이유 에 대한 함수 헤더pthread_create다음과 같습니다. int pthread_create(pthread_t * thread, const pthread_attr_t * attr, void * (*start_routine)(void *), void *arg); 기능 포인터를 제외하고는 모두 이해합니다.start_routine형식입니다.void* (*fpointer) (void*)그 말은 그 일이 그 일에void* 를 반환합니다. 그void*매개변수는 단지 논쟁에서 전달하는 방법일 뿐입니다.start_routine, 그 부분은 이해가 되는데 왜 기능이 a를 반환하는지 이해가 안가요.void*?..

programing 2023.10.20

구조물을 직접 할당할 수 없는 이유는 무엇입니까?

구조물을 직접 할당할 수 없는 이유는 무엇입니까? 태그가 있는 완전한 구조가 있다고 가정합니다.MyStruct, 라고 가정해 보겠습니다.x, y, ..., z필드에 허용되는 값입니다.왜가. struct MyStruct q = {x,y,..,z}; 허용되긴 하지만 struct MyStruct q; q = {x,y,...,z}; 안되나요?저는 이게 굉장히 짜증나쁘다고 생각합니다.두 번째 경우는, 제가 앞서 선언한 바와 같이q, 각 필드에 하나씩 값을 할당해야 합니다. q.X = x; q.Y = y; ... q.Z = z; 어디에X, Y, ..., Z의 분야입니다.MyStruct. 이게 무슨 이유가 있는 겁니까?당신이 찾고 있는 것은 복합적인 문자입니다.이것은 C99에서 언어에 추가되었습니다. 첫 번째 사례:..

programing 2023.10.20
반응형