MSDN has a page describing various VC extensions. But it is far from complete.
I've collected a list of nonstandard extensions provided by VC, some of them are evil. If you want to write standard conformant C++ code, you'd better be aware of these extensions which are on by default. Some commonly (mis-)used extensions are in bold.
W4001: nonstandard extension 'single line comment' was usedW4152: nonstandard extension, function/data pointer conversion in expressionW4200: nonstandard extension used : zero-sized array in struct/unionW4201: nonstandard extension used : nameless struct/unionW4202: nonstandard extension used : '...': prototype parameter in name list illegalW4203: nonstandard extension used : union with static member variableW4204: nonstandard extension used : non-constant aggregate initializerW4205: nonstandard extension used : static function declaration in function scopeW4206: nonstandard extension used : translation unit is emptyW4207: nonstandard extension used : extended initializer formW4208: nonstandard extension used : delete [exp] - exp evaluated but ignoredW4210: nonstandard extension used : function given file scopeW4211: nonstandard extension used : redefined extern to staticW4212: nonstandard extension used : function declaration used ellipsisW4213: nonstandard extension used : cast on l-valueW4214: nonstandard extension used : bit field types other than intW4215: nonstandard extension used : long floatW4216: nonstandard extension used : float longW4218: nonstandard extension used : must specify at least a storage class or a typeW4221: nonstandard extension used : 'identifier' : cannot be initialized using address of automatic variableW4223: nonstandard extension used : non-lvalue array converted to pointerW4224: nonstandard extension used : formal parameter 'identifier' was previously defined as a typeW4226: nonstandard extension used : 'keyword' is an obsolete keywordW4228: nonstandard extension used : qualifiers after comma in declarator list are ignoredW4231: nonstandard extension used : 'identifier' before template explicit instantiationW4232: nonstandard extension used : 'identifier' : address of dllimport 'dllimport' is not static, identity not guaranteedW4233: nonstandard extension used : 'keyword' keyword only supported in C++, not CW4234: nonstandard extension used : 'keyword' keyword reserved for future useW4235: nonstandard extension used : 'keyword' keyword not supported on this architectureW4238: nonstandard extension used : class rvalue used as lvalueW4239: nonstandard extension used : 'token' : conversion from 'type' to 'type'W4240: nonstandard extension used : access to 'classname' now defined to be 'access specifier', previously it was defined to be 'access specifier'W4288: nonstandard extension used : 'var' : loop control variable declared in the for-loop is used outside the for-loop scope; it conflicts with the declaration in the outer scopeW4289: nonstandard extension used : 'var' : loop control variable declared in the for-loop is used outside the for-loop scopeW4353: nonstandard extension used: constant 0 as function expression. Use '__noop' function intrinsic insteadW4480: nonstandard extension used: specifying underlying type for enum 'enum'W4481: nonstandard extension used: override specifier 'keyword'W4482: nonstandard extension used: enum 'enum' used in qualified nameW4509: nonstandard extension used: 'function' uses SEH and 'object' has destructorW4836: nonstandard extension used : 'type' : local types or unnamed types cannot be used as template arguments
C2599: 'enum' : forward declaration of enum type is not allowed