情况发生在定义了一个可变形参的宏的时候
#ifdef DEBUG
#include "stdio.h"
#define dprintf(format, ...) printf(format, ##__VA_ARGS__)
#else
#define dprintf(format, ...)
#endif // DEBUG
@sean-mcmanus, your suggestion worked a treat. Thank you.
For those who, like me, don't immediately know how to implement his suggestion, here's what I did.
In
c_cpp_properties.json
, in the relevantconfigurations
entry, I added this:// This file isn't included in the real build (done by Cygwin make), but it // affects how VSCode-cpptools parses the source. "forcedInclude": ["${workspaceFolder}/.vscode/supress-warnings.h"],
supress-warnings.h
contains:#ifdef __INTELLISENSE__ // 165 - too few arguments in function call #pragma diag_suppress 165 // 29 - expecting an expression #pragma diag_suppress 29 #endifEven if this file were accidentally included, it would do nothing since the compiler I use does not define
__INTELLISENSE__
.I don't know what I'll do for projects that have some files that uses the extensions that cause error 165 and 29 and others that do not, but at worst, I can now suppress the errors everywhere and discover the mistake when I build.