...
The following compliant solution performs some of the checking at compile time using a static assertion (see DCL03-AC. Use a static assertion to test the value of a constant expression).
Code Block | ||
---|---|---|
| ||
void complain(char const *msg) { errno_t err; static char const prefix[] = "Error: "; static char const suffix[] = "\n"; char buf[BUFSIZ]; /* Ensure that more than one character * is available for msg. */ static_assert(sizeof(buf) > sizeof(prefix) + sizeof(suffix), "Buffer for complain() is too small"); strcpy(buf, prefix); err = strcat_s(buf, sizeof(buf), msg); if (err != 0) { /* handle error */ } err = strcat_s(buf, sizeof(buf), suffix); if (err != 0) { /* handle error */ } fputs(buf, stderr); } |
...