I build skia m110 with msvc 2019 x64, In a very simple program I want to include SkTHash.h private header files in a .cpp file like this:
#include <include/private/SkTHash.h>
That causing many compiler errors:
E:\skia\skia\include/private/SkTHash.h(162): warning C4003: not enough arguments for function-like macro invocation 'Q_FOREACH'
E:\skia\skia\include/private/SkTHash.h(172): warning C4003: not enough arguments for function-like macro invocation 'Q_FOREACH'
E:\skia\skia\include/private/SkTHash.h(162): error C2988: unrecognizable template declaration/definition
E:\skia\skia\include/private/SkTHash.h(415): note: see reference to class template instantiation 'SkTHashTable<T,K,Traits>' being compiled
E:\skia\skia\include/private/SkTHash.h(162): error C2059: syntax error: 'for'
E:\skia\skia\include/private/SkTHash.h(162): error C2143: syntax error: missing ')' before ';'
E:\skia\skia\include/private/SkTHash.h(162): error C2238: unexpected token(s) preceding ';'
E:\skia\skia\include/private/SkTHash.h(162): error C3927: '->': trailing return type is not allowed after a non-function declarator
E:\skia\skia\include/private/SkTHash.h(162): error C3484: syntax error: expected '->' before the return type
E:\skia\skia\include/private/SkTHash.h(162): error C3613: missing return type after '->' ('int' assumed)
E:\skia\skia\include/private/SkTHash.h(162): error C3646: 'control': unknown override specifier
E:\skia\skia\include/private/SkTHash.h(162): error C2143: syntax error: missing ';' before '&&'
E:\skia\skia\include/private/SkTHash.h(162): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
E:\skia\skia\include/private/SkTHash.h(162): error C2238: unexpected token(s) preceding ';'
E:\skia\skia\include/private/SkTHash.h(162): error C2059: syntax error: '++'
E:\skia\skia\include/private/SkTHash.h(162): error C2059: syntax error: ')'
E:\skia\skia\include/private/SkTHash.h(162): error C2143: syntax error: missing ')' before ';'
E:\skia\skia\include/private/SkTHash.h(162): error C2238: unexpected token(s) preceding ';'
E:\skia\skia\include/private/SkTHash.h(162): error C3927: '->': trailing return type is not allowed after a non-function declarator
E:\skia\skia\include/private/SkTHash.h(162): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
E:\skia\skia\include/private/SkTHash.h(162): error C3927: '->': trailing return type is not allowed after a non-function declarator
E:\skia\skia\include/private/SkTHash.h(162): error C2059: syntax error: '='
E:\skia\skia\include/private/SkTHash.h(162): error C2059: syntax error: ')'
E:\skia\skia\include/private/SkTHash.h(162): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
E:\skia\skia\include/private/SkTHash.h(172): error C2988: unrecognizable template declaration/definition
E:\skia\skia\include/private/SkTHash.h(172): error C2059: syntax error: 'for'
E:\skia\skia\include/private/SkTHash.h(172): error C2143: syntax error: missing ')' before ';'
E:\skia\skia\include/private/SkTHash.h(172): error C2238: unexpected token(s) preceding ';'
E:\skia\skia\include/private/SkTHash.h(172): error C3927: '->': trailing return type is not allowed after a non-function declarator
E:\skia\skia\include/private/SkTHash.h(172): error C3484: syntax error: expected '->' before the return type
E:\skia\skia\include/private/SkTHash.h(172): error C3613: missing return type after '->' ('int' assumed)
E:\skia\skia\include/private/SkTHash.h(172): error C3646: 'control': unknown override specifier
E:\skia\skia\include/private/SkTHash.h(172): error C2143: syntax error: missing ';' before '&&'
E:\skia\skia\include/private/SkTHash.h(172): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
E:\skia\skia\include/private/SkTHash.h(172): error C2238: unexpected token(s) preceding ';'
E:\skia\skia\include/private/SkTHash.h(172): error C2059: syntax error: '++'
E:\skia\skia\include/private/SkTHash.h(172): error C2059: syntax error: ')'
E:\skia\skia\include/private/SkTHash.h(172): error C2143: syntax error: missing ')' before ';'
E:\skia\skia\include/private/SkTHash.h(172): error C2238: unexpected token(s) preceding ';'
E:\skia\skia\include/private/SkTHash.h(172): error C3927: '->': trailing return type is not allowed after a non-function declarator
E:\skia\skia\include/private/SkTHash.h(172): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
E:\skia\skia\include/private/SkTHash.h(172): error C3927: '->': trailing return type is not allowed after a non-function declarator
E:\skia\skia\include/private/SkTHash.h(172): error C2059: syntax error: '='
E:\skia\skia\include/private/SkTHash.h(172): error C2059: syntax error: ')'
E:\skia\skia\include/private/SkTHash.h(172): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
E:\skia\skia\include/private/SkTHash.h(235): error C2059: syntax error: 'for'
E:\skia\skia\include/private/SkTHash.h(235): error C2143: syntax error: missing ')' before ';'
E:\skia\skia\include/private/SkTHash.h(235): error C2238: unexpected token(s) preceding ';'
E:\skia\skia\include/private/SkTHash.h(235): error C2143: syntax error: missing ';' before '<'
E:\skia\skia\include/private/SkTHash.h(235): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
E:\skia\skia\include/private/SkTHash.h(235): error C2238: unexpected token(s) preceding ';'
E:\skia\skia\include/private/SkTHash.h(235): error C2143: syntax error: missing ';' before '++'
E:\skia\skia\include/private/SkTHash.h(235): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
E:\skia\skia\include/private/SkTHash.h(235): error C2059: syntax error: ')'
E:\skia\skia\include/private/SkTHash.h(235): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
E:\skia\skia\include/private/SkTHash.h(240): error C2059: syntax error: 'return'
E:\skia\skia\include/private/SkTHash.h(240): error C2238: unexpected token(s) preceding ';'
E:\skia\skia\include/private/SkTHash.h(244): error C2144: syntax error: 'int' should be preceded by ';'
E:\skia\skia\include/private/SkTHash.h(490): warning C4003: not enough arguments for function-like macro invocation 'Q_FOREACH'
E:\skia\skia\include/private/SkTHash.h(491): warning C4003: not enough arguments for function-like macro invocation 'Q_FOREACH'
E:\skia\skia\include/private/SkTHash.h(496): warning C4003: not enough arguments for function-like macro invocation 'Q_FOREACH'
E:\skia\skia\include/private/SkTHash.h(497): warning C4003: not enough arguments for function-like macro invocation 'Q_FOREACH'
E:\skia\skia\include/private/SkTHash.h(490): error C2988: unrecognizable template declaration/definition
E:\skia\skia\include/private/SkTHash.h(513): note: see reference to class template instantiation 'SkTHashMap<K,V,HashK>' being compiled
E:\skia\skia\include/private/SkTHash.h(490): error C2059: syntax error: 'for'
E:\skia\skia\include/private/SkTHash.h(490): error C2143: syntax error: missing ')' before ';'
E:\skia\skia\include/private/SkTHash.h(490): error C2238: unexpected token(s) preceding ';'
E:\skia\skia\include/private/SkTHash.h(490): error C3927: '->': trailing return type is not allowed after a non-function declarator
E:\skia\skia\include/private/SkTHash.h(490): error C3484: syntax error: expected '->' before the return type
E:\skia\skia\include/private/SkTHash.h(490): error C3613: missing return type after '->' ('int' assumed)
E:\skia\skia\include/private/SkTHash.h(490): error C3646: 'control': unknown override specifier
E:\skia\skia\include/private/SkTHash.h(490): error C2143: syntax error: missing ';' before '&&'
E:\skia\skia\include/private/SkTHash.h(490): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
E:\skia\skia\include/private/SkTHash.h(490): error C2238: unexpected token(s) preceding ';'
E:\skia\skia\include/private/SkTHash.h(490): error C2059: syntax error: '++'
E:\skia\skia\include/private/SkTHash.h(490): error C2059: syntax error: ')'
E:\skia\skia\include/private/SkTHash.h(490): error C2143: syntax error: missing ')' before ';'
E:\skia\skia\include/private/SkTHash.h(490): error C2238: unexpected token(s) preceding ';'
E:\skia\skia\include/private/SkTHash.h(490): error C3927: '->': trailing return type is not allowed after a non-function declarator
E:\skia\skia\include/private/SkTHash.h(490): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
E:\skia\skia\include/private/SkTHash.h(490): error C3927: '->': trailing return type is not allowed after a non-function declarator
E:\skia\skia\include/private/SkTHash.h(490): error C2059: syntax error: '='
E:\skia\skia\include/private/SkTHash.h(490): error C2059: syntax error: ')'
E:\skia\skia\include/private/SkTHash.h(490): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
E:\skia\skia\include/private/SkTHash.h(496): error C2988: unrecognizable template declaration/definition
E:\skia\skia\include/private/SkTHash.h(496): error C2059: syntax error: 'for'
E:\skia\skia\include/private/SkTHash.h(496): error C2143: syntax error: missing ')' before ';'
E:\skia\skia\include/private/SkTHash.h(496): error C2238: unexpected token(s) preceding ';'
E:\skia\skia\include/private/SkTHash.h(496): error C3927: '->': trailing return type is not allowed after a non-function declarator
E:\skia\skia\include/private/SkTHash.h(496): error C3484: syntax error: expected '->' before the return type
E:\skia\skia\include/private/SkTHash.h(496): error C3613: missing return type after '->' ('int' assumed)
E:\skia\skia\include/private/SkTHash.h(496): error C3646: 'control': unknown override specifier
E:\skia\skia\include/private/SkTHash.h(496): error C2143: syntax error: missing ';' before '&&'
E:\skia\skia\include/private/SkTHash.h(496): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
E:\skia\skia\include/private/SkTHash.h(496): error C2238: unexpected token(s) preceding ';'
E:\skia\skia\include/private/SkTHash.h(496): error C2059: syntax error: '++'
E:\skia\skia\include/private/SkTHash.h(496): error C2059: syntax error: ')'
E:\skia\skia\include/private/SkTHash.h(496): error C2143: syntax error: missing ')' before ';'
E:\skia\skia\include/private/SkTHash.h(496): error C2238: unexpected token(s) preceding ';'
E:\skia\skia\include/private/SkTHash.h(496): error C3927: '->': trailing return type is not allowed after a non-function declarator
E:\skia\skia\include/private/SkTHash.h(496): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
E:\skia\skia\include/private/SkTHash.h(496): error C3927: '->': trailing return type is not allowed after a non-function declarator
E:\skia\skia\include/private/SkTHash.h(496): error C2059: syntax error: '='
E:\skia\skia\include/private/SkTHash.h(496): error C2059: syntax error: ')'
E:\skia\skia\include/private/SkTHash.h(496): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
E:\skia\skia\include/private/SkTHash.h(504): error C2988: unrecognizable template declaration/definition
E:\skia\skia\include/private/SkTHash.h(504): error C2059: syntax error: 'return'
E:\skia\skia\include/private/SkTHash.h(504): error C2238: unexpected token(s) preceding ';'
E:\skia\skia\include/private/SkTHash.h(507): error C2146: syntax error: missing ';' before identifier 'Iter'
E:\skia\skia\include/private/SkTHash.h(566): warning C4003: not enough arguments for function-like macro invocation 'Q_FOREACH'
E:\skia\skia\include/private/SkTHash.h(567): warning C4003: not enough arguments for function-like macro invocation 'Q_FOREACH'
E:\skia\skia\include/private/SkTHash.h(566): error C2988: unrecognizable template declaration/definition
E:\skia\skia\include/private/SkTHash.h(589): note: see reference to class template instantiation 'SkTHashSet<T,HashT>' being compiled
E:\skia\skia\include/private/SkTHash.h(566): error C2059: syntax error: 'for'
E:\skia\skia\include/private/SkTHash.h(566): error C2143: syntax error: missing ')' before ';'
E:\skia\skia\include/private/SkTHash.h(566): error C2238: unexpected token(s) preceding ';'
E:\skia\skia\include/private/SkTHash.h(566): error C3927: '->': trailing return type is not allowed after a non-function declarator
E:\skia\skia\include/private/SkTHash.h(566): error C3484: syntax error: expected '->' before the return type
E:\skia\skia\include/private/SkTHash.h(566): error C3613: missing return type after '->' ('int' assumed)
E:\skia\skia\include/private/SkTHash.h(566): error C3646: 'control': unknown override specifier
E:\skia\skia\include/private/SkTHash.h(566): error C2143: syntax error: missing ';' before '&&'
E:\skia\skia\include/private/SkTHash.h(566): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
E:\skia\skia\include/private/SkTHash.h(566): error C2238: unexpected token(s) preceding ';'
E:\skia\skia\include/private/SkTHash.h(566): fatal error C1003: error count exceeds 100; stopping compilation
Is there something wrong with my build environment?
BTW: including other private skia header file in a cpp file works fine.