반응형

c 68

헬그랜드(발그랜드)와 OpenMP(C): 잘못된 긍정을 피합니까?

헬그랜드(발그랜드)와 OpenMP(C): 잘못된 긍정을 피합니까? 여기에서 볼 수 있는 Valgrind 스레드 오류 감지 도구 Helgrind에 대한 설명서 GCC를 사용하여 OpenMP 코드를 컴파일할 경우 GCC의 OpenMP 런타임 라이브러리(libgomp.so )는 POSIX pthreads 프리미티브 대신 원자 시스템 명령과 Linux futex 시스템 호출을 사용하기 때문에 데이터 레이스에 대한 잘못된 긍정 보고서의 혼란을 야기할 것이라고 경고합니다.하지만 GCC를 다시 컴파일하면 이 문제를 해결할 수 있다는 것을 알려줍니다.--disable-linux-futex구성 옵션. 그래서 해봤습니다.로컬 디렉토리(~/GCC_Valgrind/gcc_install)에 새로운 GCC 버전 4.7.0(이 문..

programing 2023.07.22

인라인 함수 v. 매크로 in C -- 오버헤드(메모리/속도)는 얼마입니까?

인라인 함수 v. 매크로 in C -- 오버헤드(메모리/속도)는 얼마입니까? 나는 스택 오버플로를 검색하여 함수와 같은 매크로와 인라인 함수의 장단점을 찾았습니다. C에서 서로 다른 매크로 기능 / 인라인 방식에 대한 찬반 토론을 찾았습니다. 하지만 그건 제가 질문한 가장 중요한 질문에 대한 답이 아니었습니다. 즉, 메모리 사용 및 실행 속도 측면에서 매크로 함수(변수, 다른 함수 호출 포함)와 인라인 함수를 사용할 때의 오버헤드는 얼마입니까? 오버헤드에 컴파일러 의존적인 차이가 있습니까?저는 icc와 gcc 둘 다 제 마음대로 합니다. 내가 모듈화하고 있는 코드 조각은 다음과 같습니다. double AttractiveTerm = pow(SigmaSquared/RadialDistanceSquared,3)..

programing 2023.07.22

C의 부동 소수점 데이터 유형 범위는?

C의 부동 소수점 데이터 유형 범위는? 저는 C 책을 읽고 부동소수점의 범위에 대해 이야기하고 있습니다. 저자는 테이블을 주었습니다. Type Smallest Positive Value Largest value Precision ==== ======================= ============= ========= float 1.17549 x 10^-38 3.40282 x 10^38 6 digits double 2.22507 x 10^-308 1.79769 x 10^308 15 digits 가장 작은 양의 값과 가장 큰 값 열의 숫자가 어디에서 온 것인지 알 수 없습니다.32비트 부동 소수점 숫자는 23 + 1비트의 가수를 가지며 8비트 지수(-126 ~ 127)를 사용하므로 표시할 수 있는 가장..

programing 2023.07.22

함수 arg에 액세스하기 위해 x86 스택을 popping할 때의 세그먼트화 오류

함수 arg에 액세스하기 위해 x86 스택을 popping할 때의 세그먼트화 오류 x86 어셈블리와 C를 연결하려고 합니다. 내 C 프로그램: extern int plus_10(int); # include int main() { int x = plus_10(40); printf("%d\n", x); return 0; } 내 어셈블리 프로그램: [bits 32] section .text global plus_10 plus_10: pop edx mov eax, 10 add eax, edx ret 저는 다음과 같이 두 가지를 컴파일하고 연결합니다. gcc -c prog.c -o prog_c.o -m32 nasm -f elf32 prog.asm -o prog_asm.o gcc prog_c.o prog_asm.o..

programing 2023.07.22

변수를 int 대 round() 함수에 사용

변수를 int 대 round() 함수에 사용 나는 그것을 여러 곳에서 보았습니다.(int)someValue부정확했고 대신 문제가 발생했습니다.round()기능.둘 사이의 차이점은 무엇입니까? 특히, 필요한 경우 C99 C에 대해.나는 또한 자바로 프로그램을 작성할 때 같은 문제를 본 적이 있습니다.캐스팅하는 경우float/double에 가치를 두는.int일반적으로 정수 절단으로 인해 부분적인 부분이 느슨해집니다. 이는 일반적으로 예상되는 반올림과 상당히 다르므로 예를 들어 2.1이 2인 것처럼 2.8은 정수 자르기를 통해 2로 끝납니다. 업데이트: 주조 시 잠재적(총) 부정확성의 또 다른 원인은 부동 소수점 유형과 반대로 정수로 표현할 수 있는 값의 제한된 범위 때문입니다(아래 설명에서 @R이 이를 상기..

programing 2023.07.22

크로스 컴파일 시 외부 라이브러리를 사용하는 방법은 무엇입니까?

크로스 컴파일 시 외부 라이브러리를 사용하는 방법은 무엇입니까? x86 unbuntu machine에서 라즈베리 파이 ARM 타겟을 위한 코드를 작성하고 있습니다.저는 gcc-linaro-armhf 툴체인을 사용하고 있습니다.저는 파이에서 몇 가지 독립적인 프로그램을 교차 컴파일하고 실행할 수 있습니다.이제, 나는 내 코드를 nurs와 같은 외부 라이브러리와 연결하고 싶습니다.어떻게 하면 이것을 이룰 수 있을까요? 프로그램을 호스트 시스템의 기존 ncurses lib에 연결한 다음 ARM에서 실행해야 합니까? (이것은 작동하지 않을 것 같습니다) lib for arm의 소스 또는 사전 빌드 버전을 가져와 lib 경로에 넣은 다음 컴파일해야 합니까? 이런 상황에서 가장 좋은 방법은 무엇입니까? cstdli..

programing 2023.07.22

리눅스 커널에서 자는 방법?

리눅스 커널에서 자는 방법? msleep() 함수를 사용하여 커널 공간에서 지정된 시간 동안 잠을 잘 수 있습니까?그렇다면 어떤 헤더 파일을 포함해야 합니까?#include 맞는 것 같지 않아요이 목적을 위해 더 나은 기능이 있을까요?나는 포함시킬 필요가 있었습니다.커널 공간에서 msleep을 사용합니다.리눅스 커널 설명서 Documentation/timers/timers-howto에 있는 Linux 커널 설명서입니다.txt에는 다음과 같은 주요 방법이 있습니다. Inserting Delays ---------------- The first, and most important, question you need to ask is "Is my code in an atomic context?" This sho..

programing 2023.07.22

C 표준 라이브러리의 위치

C 표준 라이브러리의 위치 gcc 매뉴얼에서 "C 표준 라이브러리 자체는 '/usr/lib/libc.a'에 저장됩니다."라고 명시되어 있습니다.gcc를 설치했지만 해당 위치에서 libc.a를 찾을 수 없습니다.어디에 있는지 궁금합니다. /usr/lib 위치에 많은 .so 파일이 있습니다.저것들은 무엇인가요?찾으시는 경우libc.a: $ gcc --print-file-name=libc.a /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libc.a 몇 가지 사항: gcc와 glibc는 두 가지 다른 것입니다.gcc는 컴파일러이고 glibc는 런타임 라이브러리입니다.거의 모든 것이 작동하려면 glibc가 필요합니다. .a파일은 정적 라이브러리입니다...

programing 2023.07.17

C에서 null이 아닌 종료 문자열을 strncmp로 전달하는 것이 합법입니까?

C에서 null이 아닌 종료 문자열을 strncmp로 전달하는 것이 합법입니까? 실행 파일의 세그먼트 이름을 포함하는 16바이트 배열을 가지고 있습니다. char segname[16]; 세그먼트 이름 길이가 16바이트 미만이면 나머지는 null 바이트로 채워집니다.그렇지 않으면 종료 null 바이트가 없습니다. 비교하고 싶습니다.segname다양한 문자열로, 예를 들어.__text. 전화하는 것이 합법입니까?strncmp끝이 없는 끈으로? 이 게시물은 그것이 합법적이라고 가정합니다.이 소스 코드는 합법적이기도 합니다.하지만 내 남자 페이지에는 다음과 같이 나와 있습니다. 그strncmp()함수는 null-terminated 문자열을 사전 분석적으로 비교합니다.s1그리고.s2. 전달된 크기strncmp의 ..

programing 2023.07.07

'while' 및 'for' 루프의 범위는 무엇입니까?

'while' 및 'for' 루프의 범위는 무엇입니까? 의 범위는 무엇입니까?while그리고.for루프? 예를 들어 루프 내에서 개체를 선언한 경우 해당 동작은 무엇이며 그 이유는 무엇입니까?다음 예제에서는 루프의 각 반복에 대해 모든 변수가 파괴되고 재생성됩니다.i루프 반복 사이에 지속되며 for 루프의 조건식과 최종식에 사용할 수 있습니다.루프 외부에서 사용할 수 있는 변수는 없습니다.for 루프 본체 내부의 변수 파괴는 다음 이전에 발생합니다.i증가합니다. while(int a = foo()) { int b = a+1; } for(int i=0; i 0) { cnt += trys; } Cnt 변수가 루프 뒤에 사용되지 않기 때문에 일부 컴파일러는 루프 내용을 폐기할 수 있습니다.for 또는 whil..

programing 2023.07.07
반응형