반응형

C 36

개체가 클래스 유형인지 확인합니다.

개체가 클래스 유형인지 확인합니다. 나는 a를 받는 방법이 있습니다.NSArray의Class물건들과 모든 물건들이Class아래 코드와 함께 생성된 유형: NSMutableArray *arr = [[NSMutableArray alloc] init]; [arr addObject:[NSObject class]]; [arr addObject:[NSValue class]]; [arr addObject:[NSNumber class]]; [arr addObject:[NSPredicate class]]; [arr addObject:@"not a class object"]; 문제는.Classobjective-c 클래스가 아니라 struct이므로 그냥 사용할 수 없습니다. for (int i; i

IT 2023.11.04

어떤 컴파일러가 실행 파일을 컴파일하는 데 사용되었는지 결정하는 방법은 무엇입니까?

어떤 컴파일러가 실행 파일을 컴파일하는 데 사용되었는지 결정하는 방법은 무엇입니까? 컴파일된 파일에서 어떤 컴파일러가 파일을 생성하는데 사용되었는지 알 수 있습니까?또한 오래된 '끈'의 유용성도 있습니다.이진에서 찾은 모든 아스키-ish 모양 문자열을 덤프합니다.컴파일러마다 생성하는 바이너리에 서로 다른 양의 정보를 포함시키지만 실제로는 많은 컴파일러가 문자열을 식별하는 것을 포함합니다.많은 컴파일러/링커들이 A를 삽입합니다..comment출력 파일의 섹션을 참조하여 식별할 수 있습니다.컴파일러 지문을 생성할 수 있는 몇 가지 미묘한 동작도 있지만, 이를 위한 기존 도구는 없습니다. 소스가 있는 경우 바이트 단위로 일치하는 바이너리를 얻을 때까지 해당 컴파일러를 사용하여 컴파일을 시도하는 것이 가장 쉬운..

IT 2023.11.04

Memcpy(&a + 1, &b + 1, 0)가 C11에 정의되어 있습니까?

Memcpy(&a + 1, &b + 1, 0)가 C11에 정의되어 있습니까? 이 질문은 다음의 정의에 대한 이전 질문에 이어집니다.memcpy(0, 0, 0), 정의되지 않은 행동으로 결정된 것입니다. 연결된 질문에서 알 수 있듯이 답은 C11의 조항 7.1.4:1의 내용에 달려 있습니다. 다음의 각 문은 다음의 상세한 설명에 달리 명시적으로 언급되지 않는 한 적용됩니다.함수에 대한 인수의 값(예: 함수의 도메인 외부의 값, 프로그램의 주소 공간 외부의 포인터 또는 널 포인터)이 잘못된 경우 […] 동작은 정의되지 않습니다. […] 표준함수memcpy()에 대한 포인터를 기대합니다.void그리고.const void, 이와 같이: void *memcpy(void * restrict s1, const voi..

IT 2023.10.30

C 언어의 새 행 문자는 무엇입니까?\r 또는 \n?

C 언어의 새 행 문자는 무엇입니까?\r 또는 \n? C의 새로운 대사 캐릭터는 무엇입니까?OS마다 줄 끝 캐릭터가 다른 것은 알지만, C라인 캐릭터로 번역됩니다.그 캐릭터는 무엇입니까?그건…\n. 텍스트 모드 파일을 읽거나 쓸 때, 또는 stdin/stdout 등을 사용해야 합니다.\n, 그리고 C가 번역을 대신해 줄 것입니다.이진 파일을 처리할 때는 정의에 따라 스스로 처리해야 합니다. C 언어의 새 행 문자는 무엇입니까?\r 또는 \n? 새로운 라인은 아마도 약간의 char그리고 그것은 다음과 같은 가치가 있습니다.'\n'. C11 5.2.1 이 C 새 라인은 세 곳으로 나뉩니다: C 소스 코드, 하나로.char텍스트 모드일 때 파일 I/O의 끝 부분으로 사용할 수 있습니다. 많은 컴파일러가 소스 ..

IT 2023.10.30

약한 연결의 실용적인 응용은 무엇입니까?

약한 연결의 실용적인 응용은 무엇입니까? 특수 컴파일러 명령어를 사용하면 기호가 약하다고 선언될 수 있습니다.위키피디아에 의하면: weak symbol은 객체 파일이나 동적 라이브러리에서 다른 심볼 정의에 의해 무시될 수 있는 심볼 정의입니다. 어떤 시나리오 또는 어떤 애플리케이션에 약한 기호가 필요합니까?대표적인 사용 사례는 무엇입니까?임베디드 개발에서, 예를 들어 인터럽트 포인터 벡터가 있을 때, 관심 없는 인터럽트에 대한 기본 핸들러를 얻기 위해 약한 링크를 사용하는 것은 매우 편리합니다. 이것은 빈 핸들러를 정의한 다음(한 번), 기본 핸들러에 약하게 연결된 인터럽트 포인터마다 적절하게 이름이 지정된 기호를 하나씩 새로 추가함으로써 작동합니다. 그러면 벡터는 이러한 기호로 채워집니다. 이 기호들은..

IT 2023.10.30

C에서 특정 권한으로 유닉스 도메인 소켓을 만드는 방법?

C에서 특정 권한으로 유닉스 도메인 소켓을 만드는 방법? 간단한 코드가 있어요 다음과 같습니다. sockaddr_un address; address.sun_family = AF_UNIX; strcpy(address.sun_path, path); unlink(path); int fd = socket(AF_UNIX, SOCK_STREAM, 0); bind(fd, (sockaddr*)(&address), sizeof(address)); listen(fd, 100); 다음과 같이 특정 권한을 가진 Unix Domain Socket 파일을 원자적으로 생성하고자 합니다.0777. 설명서에는 소켓 파일 권한에 대한 내용이 없습니다.umask아니면 뭐든.심지어, 만약에.umask소켓 파일에 영향을 미치므로 다중 thr..

IT 2023.10.25

C의 하드코드 바이트 배열

C의 하드코드 바이트 배열 네트워크 응용 프로그램 디버깅 중입니다. 애플리케이션이 작동하기 위해서는 교환된 데이터 중 일부를 시뮬레이션 해야 합니다.C++에서는 다음과 같은 작업을 할 수 있습니다. char* myArray = { 0x00, 0x11, 0x22 }; 하지만 이 구문에 해당하는 C를 찾을 수 없는 것 같습니다. 기본적으로 배열을 하드 코딩된 값으로 채우고 싶습니다.C에서도 같은 일을 할 수 있지만, 타입을 선언해야 합니다.char[],것은 아니다.char*, 당신이 그것의 사이즈를 얻을 수 있도록 하기 위해.sizeof연산자: char myArray[] = { 0x00, 0x11, 0x22 }; size_t myArraySize = sizeof(myArray); // myArraySize ..

IT 2023.10.10

c++ 주 기능에서 다른 기능으로 변경하려면 어떻게 해야 합니까?

c++ 주 기능에서 다른 기능으로 변경하려면 어떻게 해야 합니까? C++ 에서 C.main()다른 어떤 기능에도 적용할 수 있습니다.그게 어떻게 가능해?표준 C(그리고 C++도 마찬가지로)에서는 적어도 호스트 환경의 경우에는 불가능합니다(아래 참조).C은 C합니다.main 표준(c99)은 논쟁의 여지를 많이 남기지 않습니다. 5.1.2.2.1 프로그램 시작: (1) 프로그램 시작 시 호출되는 기능을 main이라고 합니다. 바로 그겁니다.그런 다음 매개 변수와 반환 값에 대해 약간 설명하지만 이름을 변경할 여지가 없습니다. 이는 호스트 환경을 위한 것입니다.이 표준은 또한 독립적인 환경(즉, 임베디드 시스템과 같은 경우에는 OS가 없음)을 허용합니다.자유롭게 서 있는 환경의 경우: (운영 체제의 이점 없이..

IT 2023.10.10

함수 서명에서 제한의 의미는 무엇입니까?

함수 서명에서 제한의 의미는 무엇입니까? int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routine)(void*), void *restrict arg); 제한의 의미가 무엇인지 알고 싶습니다.이것은 C99에 도입된 것으로 컴파일러에게 전달된 포인터가 인수의 다른 포인터들과 같은 위치를 가리키고 있지 않음을 알려줍니다.이 힌트를 컴파일러에 주면 코드를 깨지 않고 좀 더 공격적인 최적화 작업을 수행할 수 있습니다. 예를 들어 다음과 같은 기능을 생각해 보겠습니다. int add(int *a, int *b) { return *a + *b; } 분명히 포인터에서 두 개의 숫자를 더합..

IT 2023.10.05

이런 C/C++ 농담은 이해가 안 돼요.

이런 C/C++ 농담은 이해가 안 돼요. thedailywtf.com 의 이 기사를 읽고 난 후, 나는 정말로 그 농담을 이해했는지 확신하지 못합니다. 거기에 어떤 사람이 코드를 바꿨다고 적혀있어요 int function() { int x; char data_string[15]; ... x = 2; strcpy(data_string,"data data data"); ... } 로. int function() { int x = 2; char data_string[15] = "data data data"; ... } 코드의 모든 곳에서 그리고 어떤 이유에서인지 실행 파일의 크기를 1개에서 2개로 부풀렸습니다(아니면 그렇지 않았을 수도 있습니까?). 분명히 저는 C/C++에 익숙하지 않아서 이런 농담을 들을 ..

IT 2023.09.20
반응형