아파치 웹 서버용 모듈을 구축 할 때, 구조 선언에서 const char*
멤버가 apr_table_t
및 apr_array_header_t
선언과 같이 걸리는 경우가 발생했지만, mod_security, 심지어 새로운 ap_parse_form_data
함수는 void *
데이터 형식이 이러한 구조에 삽입되고 있음을 나타냅니다.집합 C 구조체를 재정의하는 것이 가능하다는 것을 알고 싶습니다.
제 질문은 어떻게 가능하며 왜 동일한 방법을 사용하려고하면 Visual Studio 컴파일러가 불평할까요?
이 좋은 예는 을 request_rec
메모에 저장하는 create_request 함수를 사용하는 mod_security입니다.
그럼 내 컴파일러입니까? 컴파일러가 똑같은 코드를 사용하여 컴파일러가 불만을 나타 냈을 때 사용하고있는 함수의 정의가 허용 된 apr_table_t *, const char *, const char * 만 불평했다. 나는 윈도우에서 코드를 컴파일하려고 시도하지 않았지만, 리눅스에서는 여러 번 그렇게했다. –
@AlexErwin : 발생한 오류와 함께 실제 코드를 게시 할 수 있습니까? –
코드가 풍부하기 때문에 여기에서 수행하는 방법을 잘 모르겠습니다. 그러나 apr_table_t 구조체의 스 니펫'struct apr_table_entry_t { char * key; char * val; apr_uint32_t key_checksum; };'현재 오류를 복제 할 수있는 위치에 있지 않지만,이 함수를 실행할 때'APR_DECLARE (void) apr_table_set (apr_table_t * t, const char * key, const char * val); void *로 타입 된 변수는 컴파일러가 말문을 열어서 그렇게 할 수 없다고 말합니다. C++ 컴파일러를 사용하고 있기 때문에 그럴 수 있습니까? –