«c» 태그된 질문

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


8
하드웨어 SIMD를 사용하지 않고 병렬로 1에서 병렬로 64 비트 정수에서 팩형 8 비트 정수 빼기 1 SWAR
64 비트 정수가있는 경우 8 개의 요소가있는 압축 된 8 비트 정수의 배열로 해석됩니다. 1한 요소의 결과가 다른 요소의 결과에 영향을 미치지 않고 오버플로를 처리하는 동안 각 팩형 정수에서 상수를 빼야합니다 . 나는이 코드를 가지고 있으며 작동하지만 각각의 8 비트 정수를 병렬로 빼고 메모리에 액세스하지 않는 솔루션이 필요합니다. x86에서는 psubb8 …
77 c++  c  bit-manipulation  simd  swar 

7
NULL 값을 0으로 대체 할 수 있습니까?
? NULL값의 대체물로 포인터 를 사용할 수 0있습니까? 아니면 그 일에 잘못된 것이 있습니까? 예를 들어, int i = NULL; 대체품 : int i = 0; 실험으로 다음 코드를 컴파일했습니다. #include <stdio.h> int main(void) { int i = NULL; printf("%d",i); return 0; } 산출: 0 실제로 그것은 나에게 완전히 정확한 …

10
Catalina 10.15로 업그레이드 한 후 Mac에서 C 프로그램을 컴파일 할 수 없습니다
Mojave로 업그레이드 한 후 Mac에서 C 프로그램을 컴파일 할 수 없다는 이전의 질문이 있으며 그에 대한 대답은 무엇이 잘못되었는지에 대한 대부분의 변형을 다루었습니다. 2019 년 10 월 7 일 월요일 현재 macOS Catalina 10.15로 업그레이드 할 수 있습니다. 다시 한 번, 업그레이드하는 동안 /usr/includeXMod 11.0을 Mojave 10.14.6에서 Catalina로 업그레이드하기 전에 …
64 c  xcode  macos  gcc  macos-catalina 

4
구조체 배열 끝에 빈 괄호 '{}'가 필요합니까?
Linux 커널에서 일부 C 코드 를 쳤습니다 . static struct ctl_table ip_ct_sysctl_table[] = { { .procname = "ip_conntrack_max", .maxlen = sizeof(int), .mode = 0644, .proc_handler = proc_dointvec, }, // ... { .procname = "ip_conntrack_log_invalid", .maxlen = sizeof(unsigned int), .mode = 0644, .proc_handler = proc_dointvec_minmax, .extra1 = &log_invalid_proto_min, .extra2 = &log_invalid_proto_max, …

4
무엇을 하는가? ((void (*) ()) buf) (); 평균?
picoCTF에서 이진 악용 문제를 해결하고 다음 코드를 보았습니다. ((void (*)())buf)(); buf문자 배열은 어디에 있습니까 ? 나는 도전을 해결했지만 정확히 무엇을하고 있는지 이해할 수없는 것 같습니다. 나는 보았다 이 스레드 그러나 나는 그것을 만들 수 없습니다. 무슨 ((void (*)())buf)();뜻입니까?

4
const char * 배열 초기화 쉼표가없는 경우 컴파일러 경고 생성
C 코드에서 문자열 리터럴 테이블을 많이 사용하고 있습니다. 이 테이블은 모두 다음과 같이 다소 비슷합니다. static const char* const stateNames[STATE_AMOUNT] = { "Init state", "Run state", "Pause state", "Error state", }; 위의 코드의 문제점은 테이블이 길어지고 개발 중에 수정되면 때때로 쉼표를 잊어 버리는 것입니다. 코드는 쉼표가없는 문제없이 컴파일되지만 마지막 문자열이로 …
53 c  initialization 


6
(x | y)-y 왜 단순히 x 또는`x | 0
나는 커널 코드를 읽고 있었고, 한 곳에서 if다음과 같은 문장 내에서 표현을 보았습니다. if (value == (SPINLOCK_SHARED | 1) - 1) { ............ } SPINLOCK_SHARED = 0x80000000미리 정의 된 상수는 어디에 있습니까 ? (SPINLOCK_SHARED | 1) - 1타입 변환 목적으로 왜 우리가 필요한지 궁금합니다 . 식의 결과는 80000000입니다. 0x80000000과 같습니다. …

2
argc와 argv의 주소가 12 바이트 인 이유는 무엇입니까?
내 컴퓨터 (Linux를 실행하는 64 비트 Intel)에서 다음 프로그램을 실행했습니다. #include <stdio.h> void test(int argc, char **argv) { printf("[test] Argc Pointer: %p\n", &argc); printf("[test] Argv Pointer: %p\n", &argv); } int main(int argc, char **argv) { printf("Argc Pointer: %p\n", &argc); printf("Argv Pointer: %p\n", &argv); printf("Size of &argc: %lu\n", sizeof (&argc)); printf("Size …


6
왜 이것이 역 참조 타입 천공 포인터 경고 컴파일러에 해당한다고 주장합니까?
Stack Overflow RE 에 대한 다양한 게시물 을 읽었습니다 : derefercing type-punned pointer error. 내 이해는 오류가 본질적으로 다른 유형의 포인터를 통해 객체에 액세스 할 위험에 대한 컴파일러 경고라는 것입니다 (예외가 있지만 ) 이해할 수 있고 합리적인 경고입니다.char* 내 질문은 아래 코드와 관련이 있습니다. 포인터 주소를 캐스팅 void**하여이 경고를받을 수 …
38 c  pointers  casting 

3
'#'문자를 명령 줄 인수로 전달할 수 없습니다
#명령 줄 인수로 시작하는 문자열을 전달할 수 없습니다 . 간단한 테스트는 다음과 같습니다. #include <stdio.h> int main(int argc, char *argv[]) { for (int i = 1; i < argc; i++) printf("%s ", argv[i]); putchar('\n'); return 0; } 다음과 같이 인수를 입력하면 2 4 # 5 6 의 값 argc입니다 3하지 …

7
스택 배열의 ​​포인터에 액세스 할 수없는 이유는 무엇입니까?
다음 코드를 살펴보십시오. 배열을 char**함수 로 전달하려고 합니다. #include <stdio.h> #include <stdlib.h> static void printchar(char **x) { printf("Test: %c\n", (*x)[0]); } int main(int argc, char *argv[]) { char test[256]; char *test2 = malloc(256); test[0] = 'B'; test2[0] = 'A'; printchar(&test2); // works printchar((char **) &test); // crashes because *x in …
35 c 

4
strcasecmp 알고리즘에 결함이 있습니까?
strcasecmpC 에서 함수 를 다시 구현하려고하는데 비교 과정에서 불일치하는 것으로 나타났습니다. 에서 man strcmp strcmp () 함수는 두 문자열 s1과 s2를 비교합니다. 로케일은 고려되지 않습니다 (로케일 인식 비교는 strcoll (3) 참조). s1이 각각 s2보다 작거나 일치하거나 s2보다 크면 0보다 작거나 같거나 0보다 큰 정수를 리턴합니다. 에서 man strcasecmp strcasecmp () …
34 c  strcmp 

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