«c» 태그된 질문

C는 시스템 프로그래밍 (OS 및 임베디드), 라이브러리, 게임 및 크로스 플랫폼에 사용되는 범용 프로그래밍 언어입니다. 이 태그는 달리 지정하지 않는 한 ISO 9899 표준 (최신 버전, 9899 : 2018, C89, c99, c11 등으로 버전 별 요청에 태그 지정)에 정의 된대로 C 언어와 관련된 일반적인 질문과 함께 사용해야합니다. C는 C ++과 구별되며 합리적인 이유없이 C ++ 태그와 결합해서는 안됩니다.


2
이게 무엇인가요 (())?
gcc 컴파일러 소스 코드 (gcc / c-family / c-pragma.c)를 탐색하는 동안 다음을 참조하십시오. typedef struct GTY(()) align_stack { int alignment; tree id; struct align_stack * prev; } align_stack; 그리고 저에게 많은 C 프로그래밍 (())이 있었음에도 불구하고 ,이 부분 은 아직 완전히 알려지지 않았습니다. 누군가 그 의미를 설명해 주시겠습니까? Google이 찾지 …
90 c++  c 

1
C보다 Java를 구문 분석하기가 더 쉬운 이유는 무엇입니까?
저는 C와 C ++의 문법이 문맥에 민감 하다는 사실을 잘 알고 있습니다. 특히 C에서 "lexer hack"이 필요하다는 사실을 알고 있습니다. 두 언어간에 상당한 유사성에도 불구하고 2 개의 미리보기 토큰. 구문 분석을 더 쉽게하기 위해 C에 대해 무엇을 변경해야합니까? C의 컨텍스트 민감도에 대해 본 모든 예제가 기술적으로 허용되지만 끔찍하게 이상하기 때문에 …
90 java  c  parsing  grammar 

16
i ++가 스레드로부터 안전하지 않다고 들었습니다. ++ i는 스레드로부터 안전합니까?
나는 어셈블리에서 원래 값을 임시 어딘가에 저장하고 증가시킨 다음 컨텍스트 스위치에 의해 중단 될 수있는 대체하기 때문에 i ++가 스레드로부터 안전한 진술이 아니라고 들었습니다. 그러나 ++ i에 대해 궁금합니다. 내가 알 수있는 한, 이것은 'add r1, r1, 1'과 같은 단일 어셈블리 명령어로 축소되며 하나의 명령어 일 뿐이므로 컨텍스트 스위치에 의해 …
90 c++  c  multithreading 

5
backtrace () / backtrace_symbols ()에서 함수 이름을 인쇄하는 방법은 무엇입니까?
Linux 전용 backtrace()이며 backtrace_symbols()프로그램의 호출 추적을 생성 할 수 있습니다. 그러나 내 프로그램의 이름이 아닌 함수 주소 만 인쇄합니다. 함수 이름도 인쇄하도록하려면 어떻게해야합니까? 나는 -g뿐만 아니라 -ggdb. 아래 테스트 사례는 다음과 같이 인쇄합니다. 백 트레이스 ------------ ./a.out () [0x8048616] ./a.out () [0x8048623] /lib/libc.so.6(__libc_start_main+0xf3) [0x4a937413] ./a.out () [0x8048421] ---------------------- 또한 함수 …
90 c  linux  debugging  backtrace 

12
C 메모리 관리
저는 항상 C에서 기억을 관리하는 방법을 지켜봐야한다고 들었습니다. 그리고 저는 아직 C를 배우기 시작했지만 지금까지 관련 활동을 관리하는 기억을 전혀 할 필요가 없었습니다. 저는 항상 변수를 해제하고 모든 종류의 추악한 일을해야한다고 상상했습니다. 그러나 이것은 사실이 아닌 것 같습니다. 누군가 "메모리 관리"를해야 할 때의 예를 (코드 예제와 함께) 보여줄 수 있습니까?
90 c  memory 

4
PTHREAD_MUTEX_INITIALIZER 대 pthread_mutex_init (& mutex, param)
차이점이 있습니까? pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; 또는 pthread_mutex_t lock; pthread_mutex_init ( &lock, NULL); 첫 번째 방법 만 사용하면 충분히 안전합니까? 참고 : 내 질문은 대부분 내가 할 일이 여러 클라이언트를 서버에 연결하고 작업자 스레드로 문의를 해결하는 매우 작은 프로그램에 관한 것입니다.
90 c  ubuntu  pthreads  mutex 


5
gdb :“기호 테이블이로드되지 않았습니다.”
gdb에 중단 점을 추가하려고 할 때이 오류 메시지가 계속 표시됩니다. 다음 명령을 사용하여 컴파일했습니다. gcc -g main.c utmpib2.c -o main.o and: cc -g main.c utmpib2.c -o main.o and also: g++ -g main.c utmpib2.c -o main.o 나는 또한 "-g"대신 "-ggdb"를 시도했는데 여전히 그 오류 메시지가 나타납니다. 그런 다음 gdb를 실행합니다. $gdb …
90 c  gdb 

3
C 전처리기를 사용하여 int를 문자열에 연결
C를 사용하여 #define'd int를 #define'd 문자열에 연결할 수있는 방법을 알아 내려고합니다. 전처리기를 . 내 컴파일러는 CentOS 5의 GCC 4.1입니다. 솔루션은 MinGW에서도 작동합니다. 버전 번호를 문자열에 추가하고 싶지만 작동하도록 할 수있는 유일한 방법은 문자열로 정의 된 버전 번호의 복사본을 만드는 것입니다. 내가 찾을 수있는 가장 가까운 것은 매크로 인수를 인용하는 방법 …

5
GCC 치명적 오류 : stdio.h : 해당 파일 또는 디렉토리가 없습니다.
GCC 4.9 (실험적)를 사용하여 OS X 10.9에서 C로 프로그램을 컴파일하려고합니다. 어떤 이유로 컴파일 타임에 다음 오류가 발생합니다. gcc: fatal error: stdio.h: No such file or directory 그런 다음 간단한 Hello World 프로그램을 시도했습니다. #include <stdio.h> int main(int argc, const char *argv[]) { printf("Hello, world!"); return 0; } 다시, 실행시 gcc …
90 c  gcc  stdio 

6
GCC 및 Clang 파서는 실제로 손으로 작성됩니까?
GCC와 LLVM-연타 사용하고있는 것으로 보인다 필기 재귀 하강 파서를 , 그리고 하지 생성, 들소 플렉스를 기반으로, 아래에서 위로 구문 분석 기계. 여기 누군가가 이것이 사실인지 확인해 주시겠습니까? 그렇다면 왜 주류 컴파일러 프레임 워크는 손으로 쓴 파서를 사용합니까? 업데이트 : 여기에이 주제에 대한 흥미로운 블로그

4
C ++ 코드에서 C 함수 호출
C ++에서 호출하고 싶은 C 함수가 있습니다. extern "C" void foo()C 함수가 g ++를 사용하여 컴파일되지 않았기 때문에 " "종류의 접근 방식을 사용할 수 없습니다 . 그러나 gcc를 사용하여 잘 컴파일됩니다. C ++에서 함수를 호출하는 방법에 대한 아이디어가 있습니까?
90 c++  c  linux  extern-c 

4
HTTP POST를 수행하고 응답을 사용하는 간단한 C 예제
HTTP 게시를 수행하는 매우 간단한 C 애플리케이션을 만들고 싶습니다. 몇 가지 매개 변수가 필요하며이를 사용하여 URL을 구성합니다. 간단한 HTTP POST를 수행하고 curl을 사용하지 않고 응답을 받고 싶습니다. 의사 코드 : 2 개의 인수 처리 템플릿 URL에 인수 입력 : http://api.somesite.com/apikey=ARG1&command=ARG2 생성 된 URL에서 POST 수행 응답 소비 내 Google 및 …
90 c  http  http-post 

14
스택이 위로 또는 아래로 증가합니까?
이 코드는 c에 있습니다. int q = 10; int s = 5; int a[3]; printf("Address of a: %d\n", (int)a); printf("Address of a[1]: %d\n", (int)&a[1]); printf("Address of a[2]: %d\n", (int)&a[2]); printf("Address of q: %d\n", (int)&q); printf("Address of s: %d\n", (int)&s); 출력은 다음과 같습니다. Address of a: 2293584 Address of a[1]: 2293588 …
90 c  memory  stack 

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.