반응형

C 103

gcc: 정의되지 않은 참조

gcc: 정의되지 않은 참조 이것을 정리하고 싶습니다. 프로그램 #include int main(){ int i = avpicture_get_size(AV_PIX_FMT_RGB24,300,300); } 실행 중 gcc -I$HOME/ffmpeg/include program.c 에러가 발생하다 /tmp/ccxMLBme.o: In function `main': program.c:(.text+0x18): undefined reference to `avpicture_get_size' collect2: ld returned 1 exit status 단, avpicture_get_size는 정의되어 있습니다.왜 이런 일이 생기는 건가요? 단, avpicture_get_size는 정의되어 있습니다. 아니요, 헤더()..

programing 2022.08.12

C 또는 C++로 콜스택 인쇄

C 또는 C++로 콜스택 인쇄 특정 함수가 호출될 때마다 C 또는 C++에서 실행 중인 프로세스로 콜스택을 덤프하는 방법이 있습니까?제가 생각하고 있는 것은 다음과 같습니다. void foo() { print_stack_trace(); // foo's body return } 서 ★★★★★print_stack_trace는 Perl과 동일하게 동작합니다. 또는 다음과 같은 것이 있습니다. int main (void) { // will print out debug info every time foo() is called register_stack_trace_function(foo); // etc... } 서 ''는register_stack_trace_function는 스택 .foo출됩니니다다 스탠다드 C 도..

programing 2022.08.12

/proc/self/exe가 없는 현재 실행 파일의 경로 찾기

/proc/self/exe가 없는 현재 실행 파일의 경로 찾기 Linux는 /proc/self/exe로 쉽게 할 수 있을 것 같습니다.그러나 크로스 플랫폼 인터페이스를 사용하여 C/C++에서 현재 응용 프로그램의 디렉토리를 찾을 수 있는 편리한 방법이 있는지 알고 싶습니다.몇몇 프로젝트가 argv[0]를 가지고 장난치는 것을 봤지만 완전히 믿을 수 있는 것은 아닌 것 같다. 예를 들어 /proc/가 없는 Mac OS X를 지원해야 한다면 어떻게 하시겠습니까?#ifdefs를 사용하여 플랫폼 고유의 코드(NSBundle 등)를 분리합니다.아니면 엣지 케이스에서 버그를 발견할 위험을 무릅쓰고 argv[0], $PATH 등에서 실행 파일의 경로를 추론해 보시겠습니까?일부 OS 고유의 인터페이스: Mac OS X..

programing 2022.08.12

C에서는 문자열 상수를 어떻게 선언합니까?

C에서는 문자열 상수를 어떻게 선언합니까? C에서 숫자 상수를 다음과 같이 선언하는 것이 꽤 관용적이거나 적어도 좋은 스타일이라는 것을 알고 있습니다.enum대신 s.#define먹어버리죠. /* bad style */ #define MAXLINE 1024 /* good/better style */ enum { MAX_LINE = 1024 }; 문자열 상수의 정의에 동등한 규칙이 있습니까? /* is this good style? */ #define HELLO "Hello World" /* or is this better? */ const char *HELLO2 = "Howdy"; 어떤 게 더 좋아요?가능하다면 두 방법 중 몇 가지 결점을 보여 줍니다.로마로 가는 길이 하나 더 있습니다. static c..

programing 2022.08.11

sleep() 뒤에 있는 알고리즘은 무엇입니까?

sleep() 뒤에 있는 알고리즘은 무엇입니까? 여기서 항상 궁금했던 것이 있습니다: sleep()은 어떻게 구현됩니까? OS에서 API를 사용하는 것이 전부라면 API는 어떻게 만들어질까요? 이 모든 것은 CPU에 특별한 기계 코드를 사용하는 것으로 요약됩니까? CPU에 특별한 보조 프로세서나 sleep()이 없으면 사용할 수 없는 기타 기구가 필요합니까? sleep()의 가장 잘 알려진 화신은 C(정확히 말하면 GNU의 libc와 같은 C 컴파일러에 부속된 라이브러리)입니다.오늘날 거의 모든 언어가 동등한 기능을 가지고 있지만, 일부 언어(생각컨대 Bash)에서의 sleep 구현은 이 질문에서 우리가 보고 있는 것이 아닙니다. EDIT: 몇 가지 답변을 읽으면 프로세스가 대기열에 있는 것을 알 수 있..

programing 2022.08.11

특정 인터페이스에서 cURL을 사용하는 방법

특정 인터페이스에서 cURL을 사용하는 방법 이 예에 따라 FTP 서버상의 파일을 FTP로 변환하는 코드를 개발 중입니다. 서버의 다른 인터페이스가 다른 소켓 연결과 관련되어 있기 때문에 업로드에 서버의 특정 인터페이스(IP)를 사용하도록 curl을 지정합니다. 어떻게 할 수 있는 방법이 있을까요?컬 서포트인 것 같습니다.--interface선택 curl --interface eth0 wlan0 또는 Lasberry/RPI의 디폴트 이외의 인터페이스가 있는 경우는, sudo 또는 root로서 실행할 필요가 있습니다. 이 경우 eth0 및 wlan0을 실행하고 있었는데 기본 NIC는 eth0이었습니다.ping은 sudo 없이 동작하고 curl은 접속이 타임아웃되어 eth0에서 sudo 없이 동작하는 것 이..

programing 2022.08.11

최적화되지 않는 무한 빈 루프를 만들려면 어떻게 해야 합니까?

최적화되지 않는 무한 빈 루프를 만들려면 어떻게 해야 합니까? C11 표준은 일정한 제어식을 가진 반복문을 최적화하지 않아야 함을 암시하는 것으로 보입니다.저는 이 답변에서 조언을 얻고 있습니다.이 답변은 표준 초안의 섹션 6.8.5를 구체적으로 인용하고 있습니다. 제어식이 상수식이 아닌 반복문은 구현에 의해 종료되는 것으로 간주될 수 있다. 이 답변에서 이 루프는while(1) ;최적화의 대상이 되어서는 안 됩니다. 그러면 Clang/LLVM은 왜 아래 루프를 최적화합니까? (와 컴파일)cc -O2 -std=c11 test.c -o test)? #include static void die() { while(1) ; } int main() { printf("begin\n"); die(); printf("..

programing 2022.08.11

C, C++에서 Windows 또는 Linux 검출

C, C++에서 Windows 또는 Linux 검출 이 질문에는 이미 답변이 있습니다. 프리프로세서 디렉티브를 사용하여 OS를 확인하려면 어떻게 해야 합니까? (16개 답변) 닫힘2년 전에요. 크로스 플랫폼 프로그램을 쓰고 있습니다.이 하나의 프로그램을 Windows와 Linux 모두에서 실행하고 싶기 때문에 2개의 플랫폼에 대해 2개의 다른 코드 세그먼트를 가지고 있습니다.OS가 Windows라면 첫 번째 코드 세그먼트를 실행하고 Linux라면 두 번째 코드 세그먼트를 실행합니다. 그래서 다음 코드를 작성했는데 Windows와 Linux를 빌드할 때 오류가 발생합니다.해결하려면 어떻게 해야 하나요? #ifdef __unix__ /* __unix__ is usually defined by compiler..

programing 2022.08.10

0x 표기법을 사용한 숫자는 무엇을 의미합니까?

0x 표기법을 사용한 숫자는 무엇을 의미합니까? 의 개요0x숫자 평균의 접두사? const int shared_segment_size = 0x6400; C프로그램에서 나온 거예요.나는 그것이 무엇을 의미하는지, 그리고 특히 그 편지가 무엇인지 기억나지 않는다.x수단.다음 문자로 시작하는 리터럴0x16진수 정수입니다.(베이스 16) 갯수0x6400이25600. 6 * 16^3 + 4 * 16^2 = 25600 문자를 포함한 예(A = 10, B = 11인 16진수 표기법에서도 사용됨)F = 15) 갯수0x6BF0이27632. 6 * 16^3 + 11 * 16^2 + 15 * 16^1 = 27632 24576 + 2816 + 240 = 27632 C 및 C 구문에 기초한 언어에서는 프레픽스는0x는 16진수(..

programing 2022.08.10

NULL, '\0'과 0의 차이점은 무엇입니까?

NULL, '\0'과 0의 차이점은 무엇입니까? 0의 한 값 가 있는 것으로 . - C 서 0 양 0 양 양 0 양 in 0 。NULL,NUL ★★★★★★★★★★★★★★★★★」0. 는 ASCII 자 i i i 。'0'48 ★★★★★★★★★★★★★★★★★」0x30. NULL포인터는 보통 다음과 같이 정의됩니다. #define NULL 0 또는 #define NULL (void *)0 ,, 음, 음, 음, 다, 다 등이 있습니다.NUL ★★★'\0'될 것 .0뿐만 아니라. 이 세 가지 값이 같을 수 없는 경우가 있습니까? 64비트 시스템에서도 마찬가지입니까?주의: 이 답변은 C++가 아닌 C 언어에 적용됩니다. 특수한 포인터 리터럴 " " " "0사용하는 문맥에 따라 다른 의미를 달리합니다.모든 경우 이 값..

programing 2022.08.10
반응형