반응형

C 59

다양한 64비트 데이터 모델과 비교하여 32비트(size_t)의 사이즈는 어떻게 됩니까?

다양한 64비트 데이터 모델과 비교하여 32비트(size_t)의 사이즈는 어떻게 됩니까? 64비트 시스템에서는sizeof(unsigned long)는 시스템에 의해 구현된 데이터 모델에 따라 달라집니다.예를 들어 LLP64(Windows)에서는 4바이트, LP64(Linux 등)에서는 8바이트입니다.뭐가sizeof(size_t)그럴 것 같나?다음과 같은 데이터 모델에 따라 달라집니까?sizeof(long)그래요? 그렇다면 어떻게요? 참고 자료: Wikipedia의 64비트 데이터 모델size_t는 size of 연산자(C99 6.3.5.4.4) 및 malloc 및 friends 인수(C99 7.20.3.3 등)의 부호 없는 정수 반환 유형으로 C 표준에 의해 정의됩니다.실제 범위는 최대값(SIZE_MAX..

source 2022.09.03

python 확장 - swig 또는 Cython이 아닌 swig로 확장

python 확장 - swig 또는 Cython이 아닌 swig로 확장 사이코랑 놀아난 내 비단뱀 코드에서 병목현상을 발견했어그 후 퍼포먼스를 위해 c/c++ 확장자를 쓰기로 했습니다. 스위크의 도움으로 당신은 논쟁 등에 거의 신경 쓸 필요가 없다.모든 것이 잘 작동한다. 이제 질문하겠습니다. swig는 실제 .pyd 또는 .so 코드를 호출하기 전에 많은 '체크'와 'PySwigObject'를 수행하는 상당히 큰 py 파일을 만듭니다. 이 파일을 손으로 쓰거나 swig에게 맡기면 성능이 향상될지 경험해 본 사람이 있습니까? Boost를 고려해야 합니다.다른 언어에 대한 바인딩을 생성하지 않을 계획인 경우 Python을 참조하십시오. 바인딩할 함수와 클래스가 많은 경우 Py++는 바인딩을 만드는 데 필요..

source 2022.09.03

CC, gcc, g++의 차이?

CC, gcc, g++의 차이? 어셈블리 코드 생성, 사용 가능한 라이브러리, 언어 기능 등에서 C 및 C++ 코드를 컴파일할 때 3개의 컴파일러 CC, gcc, g++의 차이점은 무엇입니까?이에 대한 답은 플랫폼에 따라 다릅니다.예를 들어 Linux에서 발생하는 동작은 Solaris에서 발생하는 동작과는 다릅니다. (플랫폼 고유의 것이 아니기 때문에) 쉬운 부분은 'gcc'와 'g++'를 분리하는 것입니다. gcc는 GCC(GNU 컴파일러 컬렉션)의 GNU C 컴파일러입니다. g++는 GCC의 GNU C++ 컴파일러입니다. 플랫폼에 따라 다르므로 어려운 부분은 'CC'(및 'cc')의 의미입니다. Solaris에서 CC는 보통 Sun C++ 컴파일러 이름입니다. Solaris에서 cc는 보통 Sun C..

source 2022.09.01

C의 복소수를 사용하는 방법

C의 복소수를 사용하는 방법 C의 복소수로 작업하려면 어떻게 해야 하나요?아, 그렇구나.complex.h헤더 파일 사용법에 대한 정보는 별로 없습니다.어떻게 하면 실제 부품과 가상의 부품에 효율적으로 접근할 수 있을까요?모듈 및 위상을 얻기 위한 네이티브 기능이 있습니까?이 코드가 도움이 될 것입니다.또, 매우 알기 쉬운 코드입니다. #include /* Standard Library of Input and Output */ #include /* Standard Library of Complex Numbers */ int main() { double complex z1 = 1.0 + 3.0 * I; double complex z2 = 1.0 - 4.0 * I; printf("Working with com..

source 2022.08.30

TRUE 매크로와 FALSE 매크로의 이상한 정의

TRUE 매크로와 FALSE 매크로의 이상한 정의 나는 코딩 책에서 다음과 같은 매크로 정의를 보았다. #define TRUE '/'/'/' #define FALSE '-'-'-' 거기에는 아무런 설명이 없었다. 이것들이 어떻게 기능하는지 설명해 주세요.TRUE그리고.FALSE.어디 보자:'/' / '/'를 의미합니다.char문자 그대로의/, 로 나눕니다char문자 그대로의'/'그 자체입니다.그 결과는 1로, 이것은 에 있어서 타당하게 들린다.TRUE. 그리고.'-' - '-'를 의미합니다.char문자 그대로의'-', 그 자체에서 뺍니다.이것은 제로입니다(FALSE). 여기에는 두 가지 문제가 있습니다. 첫째, 읽을 수 없습니다.사용.1그리고.0훨씬 낫습니다.그리고 타탄라마와 케렉으로SB는 이 정의를 사..

source 2022.08.30

C 함수 구문, 파라미터 목록 뒤에 선언된 파라미터 유형

C 함수 구문, 파라미터 목록 뒤에 선언된 파라미터 유형 저는 C는 비교적 처음입니다.지금까지 본 적이 없는 함수 구문의 형태로 파라미터 타입이 파라미터 리스트 뒤에 정의되어 있습니다.일반적인 C 함수 구문과 어떻게 다른지 누가 설명해 줄 수 있나요? 예: int main (argc, argv) int argc; char *argv[]; { return(0); } 이는 파라미터 리스트의 구식 구문이며, 지금도 지원됩니다.K&R C에서는 타입 선언을 생략할 수도 있습니다.디폴트로는 int. 즉, main(argc, argv) char *argv[]; { return 0; } 같은 기능이 될 것입니다.차이는 없습니다.그것은 C의 함수 선언에 대한 오래된 구문일 뿐입니다.이것은 ANSI 이전에 사용되었습니다...

source 2022.08.30

공백 문자가 있는 입력에서 문자열을 읽으시겠습니까?

공백 문자가 있는 입력에서 문자열을 읽으시겠습니까? 이 질문에는 이미 답변이 있습니다. scanf를 사용하여 공백 입력을 허용하려면 어떻게 해야 합니다. (11개의 답변) 닫힘3년 전. Ubuntu를 사용하고 있으며 Geany와 CodeBlock도 IDE로 사용하고 있습니다.제가 하려고 하는 것은 줄을 읽는 것입니다."Barack Obama")를 사용하여 변수를 지정합니다. #include int main(void) { char name[100]; printf("Enter your name: "); scanf("%s", name); printf("Your Name is: %s", name); return 0; } 출력: Enter your name: Barack Obama Your Name is: Bar..

source 2022.08.30

Apple에서 정적 라이브러리 결합

Apple에서 정적 라이브러리 결합 이 질문에서 접근 방법을 시도했지만 Linux 버전인 것 같습니다.ar오브젝트 파일을 다시 결합하지 못했기 때문에 Mac 버전과 다릅니다. 기본적으로 실행 스크립트 빌드 단계를 통해 다른 정적 라이브러리를 Xcode 정적 라이브러리 빌드 제품에 병합합니다. 안타깝게도 다른 라이브러리는 자체 빌드 시스템이 있기 때문에 프로젝트에 직접 컴파일할 수 없습니다(따라서 컴파일된 libs를 사용합니다). 다른 라이브러리를 통합하려면ar빌드 제품을 디컴파일하지 않고 Xcode 생성 라이브러리로 이동합니다.어떻게 하면 좋을까요?사용할 수 있습니다.libtool하기 위해서 libtool -static -o new.a old1.a old2.a 멀티아키텍처 스태틱라이브러리를 취급하는 경우..

source 2022.08.30

GDB: 크래시된 프로세스의 모든 매핑 메모리 영역 목록 표시

GDB: 크래시된 프로세스의 모든 매핑 메모리 영역 목록 표시 GDB에서 디버깅하려고 하는 x86 Linux 머신(중요한 경우에는 커널 2.6.35-22)의 데드 프로세스에서 풀히프 코어 덤프를 취득했습니다. 이 프로세스에 의해 할당된 모든 메모리주소 영역의 목록을 표시하다GDB 명령어가 있나요?즉, 이 덤프에서 검사할 수 있는 모든 유효한 메모리주소를 알 수 있을까요? 질문하는 이유는 프로세스 힙 전체에서 특정 바이너리 문자열을 검색해야 하며find명령어, 시작 주소와 끝 주소가 필요합니다.0x00부터 0xff까지 검색만 하면 됩니다.동작하지 않는 이유는find는, 액세스 할 수 없는 주소를 발견하면 즉시 정지합니다. (gdb) /w 0x440000, 0xff0000, 0x12345678을 찾습니다. ..

source 2022.08.29

C 컴파일러는 연속된 할당을 휘발성 변수에 병합할 수 있습니까?

C 컴파일러는 연속된 할당을 휘발성 변수에 병합할 수 있습니까? 하드웨어 벤더에 의해 보고된 이론적인 하드웨어 문제(결정적이지 않고 테스트하기 어려우며 실제로 발생한 적이 없음)가 있습니다.이 문제로 인해 특정 메모리 범위에 대한 이중 워드 쓰기가 향후 버스 전송에 손상을 줄 수 있습니다. C코드에 명시적으로 더블워드를 쓰는 것은 아니지만 컴파일러가 (현재 또는 미래의 구현에서) 인접한 여러 개의 워드 할당을 하나의 더블워드 할당으로 통합할 수 있을지 걱정입니다. 컴파일러는 휘발성 물질의 할당 순서를 변경할 수 없지만, 병합이 순서 변경으로 간주되는지는 불분명합니다.직감적으로 그렇긴 한데, 언어 변호사한테 교정 받은 적 있어! 예: typedef struct { volatile unsigned reg0;..

source 2022.08.29
반응형