콜백 기반 C API가있는 C++ 라이브러리가 있습니다.사용자 데이터로 엄격한 앨리어싱 및 콜백
typedef struct {...} Result;
typedef void (*callback) (const Result* result, void* userData);
사용자가이 같은 콜백을 등록 할 수 있으며, 임의의 데이터에 대한 포인터를 설정할 수 있으며,이 라이브러리는 다시 그 포인터를 전달 콜백 물마루 것이다 콜백 유형은 다음과 같다.
내 관심사는 다음과 같습니다. 엄격한 앨리어싱 규칙을 위반했는지 여부입니다. userData의 유형을 char *로 변경해야합니까?
어떻게 콜백을 등록 하시겠습니까? – jxh
왜 이것이 엄격한 앨리어싱 규칙을 어기는 것입니까? 컴파일러 오류가 발생합니까? 어떤 종류? 무슨 컴파일러? – kebs
@kebs : 컴파일러 오류가 없으면 엄격한 앨리어스 위반이 발생하지 않습니다. 질문자는 규칙을 다소 오해하고 있으며, 코드에 UB의 원인을 알 수없는 것을 두려워합니다. 그것에 대해 묻는 것은 현명한 것 같습니다. –