반응형

c 13

C++ 및 C의 헤더 가드

C++ 및 C의 헤더 가드 LearnCpp.com | 1.10 — 전처리기를 처음 봅니다.헤더 보호 아래에는 다음과 같은 코드 조각이 있습니다. add.h: #include "mymath.h" int add(int x, int y); 빼다h: #include "mymath.h" int subtract(int x, int y); main.cpp: #include "add.h" #include "subtract.h" 헤더 가드를 구현할 때 다음과 같이 언급됩니다. #ifndef ADD_H #define ADD_H // your declarations here #endif 선언문이 여기에 무엇이 있을까요?그리고, 그래야 합니다.int main()다를 #endif? 추가하고 있습니까?_H컨벤션이나 꼭 해야 할 ..

programing 2023.09.13

Ubuntu에서 코어 덤프 파일을 생성하는 방법

Ubuntu에서 코어 덤프 파일을 생성하는 방법 이 질문에는 이미 다음과 같은 답변이 있습니다. 분할 오류에 대해 Linux에서 코어 덤프를 생성하는 방법은 무엇입니까? (13개 답변) 닫힘9년 전에. 우분투에서 코어 덤프 파일을 생성하는 방법을 알고 싶습니다.저는 우분투 8.04.1과 gcc 컴파일러 4.2.3을 사용하고 있습니다.코어 덤프를 생성하기 위한 간단한 C 프로그램을 작성했습니다.gcc-g badpointer.c와 같이 프로그램을 컴파일하였습니다. 프로그램을 실행하면 segmentation fault는 발생하지만 core dump는 발생하지 않습니다.코어 덤프 파일을 생성하려면 어떤 추가 작업을 수행해야 합니까?리눅스 다음 명령으로 코어 덤프를 활성화합니다. ulimit -c unlimite..

programing 2023.09.13

printf를 사용하여 64비트 정수를 교차 플랫폼으로 인쇄

printf를 사용하여 64비트 정수를 교차 플랫폼으로 인쇄 Windows에서는 "%I64d"입니다.Linux 및 Solaris에서는 "%lld"입니다. 크로스 플랫폼을 작성하려는 경우printfs그것은 인쇄물long long가치: 그렇게 하는 좋은 방법은 무엇입니까? long long ll; printf(???, ll); 몇 가지 접근법이 있습니다. 당신은 코드를 C99에 맞는 방식으로 작성한 다음 컴파일러 작성자가 당신을 실망시킬 때 시스템별 해킹을 제공할 수 있습니다. (안타깝게도, 그것은 C99에서 다소 일반적입니다.) #include #include printf("My value is %10" PRId64 "\n", some_64_bit_expression); 대상 시스템 중 하나가 구현을 게을..

programing 2023.08.29

intptr_t 및 uninttr_t의 문자열 형식

intptr_t 및 uninttr_t의 문자열 형식 의 문자열 형식은 무엇입니까?intptr_t그리고. uintptr_t이는 32비트 및 64비트 아키텍처 모두에 유효합니다. 편집 warning: format ‘%x’ expects type ‘unsigned int’, but argument 2 has type "AAA" 이것은 제가 64비트에서 받고 있는 경고이지만 32비트에서는 받지 않습니다. intptr_t AAA 그것은 다음의 매크로일 것입니다.inttypes.h: 위해서printf:PRIdPTR PRIiPTR PRIoPTR PRIuPTR PRIxPTR PRIXPTR 위해서scanf:SCNdPTR SCNiPTR SCNoPTR SCNuPTR SCNxPTR 사용 예: uintptr_t p = SOME..

programing 2023.08.29

따옴표로 묶은 문자열 내 매크로 확장

따옴표로 묶은 문자열 내 매크로 확장 이 질문에는 이미 다음과 같은 답이 있습니다. 마감됨10년 전에. 중복 가능성: C 문자열을 만드는 매크로 나는 유형의 하나의 인수를 받아들이는 함수를 가지고 있습니다.char*,맘에 들다f("string"); 만약 문자열 인수가 함수 호출에서 즉시 정의된다면, 어떻게 문자열 본문 내에서 매크로를 확장할 수 있습니까? 예: #define COLOR #00ff00 f("abc COLOR"); 와 동등할 것입니다. f("abc #00ff00"); 그러나 대신 확장이 수행되지 않고 함수가 문자 그대로 수신됩니다.abc COLOR. 특히 매크로를 정확하게 확장해야 합니다.\"#00ff00\"따라서 이 인용된 토큰은 전달된 문자열 인수의 나머지와 연결됩니다.f()포함된 인용문..

programing 2023.08.04

OpenMP가 없는 시스템에서 OpenMP 무시

OpenMP가 없는 시스템에서 OpenMP 무시 OpenMP를 사용하는 C++ 프로그램이 있는데, OpenMP가 설치되어 있거나 설치되어 있지 않은 여러 시스템에서 실행됩니다. 컴퓨터에 OpenMP가 없는지 프로그램에 알려주고 무시하려면 어떻게 해야 합니까?#include 오픈 MP 디렉티브(예:#pragma omp parallel ...) 및/또는 라이브러리 기능(예:tid = omp_get_thread_num();) ?OpenMP 컴파일은 전처리기 정의 "_OPENMP"를 추가하므로 다음 작업을 수행할 수 있습니다. #if defined(_OPENMP) #pragma omp ... #endif 몇 가지 예는 http://bisqwit.iki.fi/story/howto/openmp/ #Discusion..

programing 2023.07.25

if 문 정수

if 문 정수 저는 이것이 간단한 질문이라고 생각하지만, 저는 다음과 같이 어려움을 겪고 있습니다.예를 들어 다음과 같은 문장이 있습니다(언어는 C). int foobar if (foobar) { // do something. } 자, 만약 제가 이것에 대해 옳다면, 이 진술은 다음과 같은 경우에 사실입니다.foobar0이 아닙니다.그래서 그것은 거의 똑같아야 합니다.if (foobar!=0). 하지만 만약에foobar음수가 됩니까?음 또는 양의.0이 아닌 모든 것은 진정한 가치입니다.if 또한 음수를 고려합니다: -1 C에서 -1은 내부적으로 다음과 같이 표시됩니다.0xFFFFFFFF이 경우, 부호 없는 정수로 캐스팅하면 양수가 될 것입니다. 하지만 C99 표준 컴파일러가 등장한 후에, 저는 당신이 다..

programing 2023.07.25

C 함수 호출의 기본 인수 승격

C 함수 호출의 기본 인수 승격 세우다 C에서 함수를 호출할 때 기본 인수 프로모션에 대해 몇 가지 질문이 있습니다.다음은 C99 표준(pdf)의 6.5.2.2 "기능 호출" 항목 6, 7 및 8항입니다(읽기 쉽도록 목록에 추가 및 분할 강조). 제6항 호출된 함수를 나타내는 식이 프로토타입을 포함하지 않는 형식을 가질 경우, 각 인수에 대해 정수 승격이 수행되고, 다음과 같은 형식을 갖는 인수에 대해 정수 승격이 수행됩니다.float으로 double이를 기본 인수 승격이라고 합니다. 인수의 수가 매개 변수의 수와 같지 않으면 동작이 정의되지 않습니다. 함수가 프로토타입을 포함하는 형식으로 정의되고 프로토타입이 생략 부호로 끝나는 경우(, ... 후 이 매개되지 않았습니다.) 또는 승격 후 인수 유형이 ..

programing 2023.07.25

표준 C/C++에서 파일 구분 기호를 가져오는 방법: / 또는 \?

표준 C/C++에서 파일 구분 기호를 가져오는 방법: / 또는 \? 함수를 작성하고 싶습니다. inline char separator() { /* SOMETHING */ } 표준 C/C++/C++11 ?(시스템에 따라 슬래시 또는 백슬래시를 의미함) 시스템의 파일 구분자를 반환합니다.이것을 달성할 수 있는 방법이 있습니까?defs를 확인하는 것 말고는 어떻게 해야 할지 잘 모르겠습니다. inline char separator() { #ifdef _WIN32 return '\\'; #else return '/'; #endif } 또는 (PaperBirdMaster가 제안한 대로) const char kPathSeparator = #ifdef _WIN32 '\\'; #else '/'; #endif 만약 당신..

programing 2023.07.20

'*' 연산자 없이 곱셈을 수행하려면 어떻게 해야 합니까?

'*' 연산자 없이 곱셈을 수행하려면 어떻게 해야 합니까? 저는 C를 배우면서 몇 가지 기본적인 것들을 공부하고 있었습니다.* 연산자를 사용하지 않고 숫자에 7을 곱하는 문제가 발생했습니다.기본적으로 이렇습니다. (x = 0 ? product : -product; } 고객이 필요로 하는 곱셈은*알았어, 친구!'*' 연산자는 쉽게 피할 수 있습니다. mov eax, 1234h mov edx, 5678h imul edx '*'가 보이지 않습니다.물론, 만약 당신이 그것의 정신을 이해하고 싶다면, 당신은 또한 신뢰할 수 있는 오래된 시프트를 사용하고 알고리즘을 추가할 수 있습니다. mult proc ; Multiplies eax by ebx and places result in edx:ecx xor ecx, ..

programing 2023.07.05
반응형