int f1(int *x);
int main() {
signed char a = 0, b = 0;
f1(&a); // 傳 signed char* 給 int*
}
int f1(int *x) { *x = 0xaabb; } // 寫入 4 字節,覆蓋相鄰 b
GCC 僅給警告 (-Wpointer-sign、-Wincompatible-pointer-types),不報錯。
void* 可隱式轉換為任意對象指針,歷史包袱兼容性。b)。-Wall -Wextra -pedantic、Clang-Tidy、Cppcheck、Coverity 等工具在編譯期/CI 捕獲此類缺陷。-Wall -Wextra -Wconversion -Wpointer-sign -Wstrict-aliasing。-fno-strict-aliasing 禁用嚴格別名優化 (若確需類型雙關)。union 或 memcpy 進行類型雙關,符合標準且可移植。