/* * NEGATIVE COMPILE TEST -- TODO.md sections 1.3 and 2.2.5. * * This file must NOT compile. It is built by the CTest entry * `negative_format_mismatch` with -Werror, and that test is marked WILL_FAIL. * * What it asserts: the format attributes on the variadic wrappers are attached * and effective. Going through a wrapper is exactly how a caller loses the * compile-time format checking it would have had calling printf(3) directly -- * printf("%d", "str") is caught and an unattributed wrapper's equivalent is not. * AKSL_PRINTF_FORMAT is what restores it, and this is what proves it is there. */ #include int main(void) { char buf[64]; int count = 0; akerr_ErrorContext *raised = NULL; /* %d against a string. This is the line that must not build. */ raised = aksl_snprintf(&count, buf, sizeof(buf), "%d", "not an int"); return raised == NULL ? 0 : 1; }