You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have found an issue when trying to integrate google test with my project which uses Qt.
The 'forever' variable in gtest.cc:5230 is being processed as the 'forever' macro that is declared in qglobal.h:956 (from the QtCore libraries).
To fix it I just need to change the 'forever' variable name to something like 'repeats_forever', very low risk as it is just a local variable used in the for loop condition.
Code snippets and error report below:
gtest.cc: qglobal.h:
Build Error:
....\googletest\googletest/src/gtest.cc: In member function 'bool testing::internal::UnitTestImpl::RunAllTests()':
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:948:19: error: expected unqualified-id before 'for'
#define Q_FOREVER for(;;)
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:956:21: note: in expansion of macro 'Q_FOREVER'
define forever Q_FOREVER
^
....\googletest\googletest/src/gtest.cc:5230:14: note: in expansion of macro 'forever'
const bool forever = repeat < 0;
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:948:25: error: expected primary-expression before ')' token
#define Q_FOREVER for(;;)
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:956:21: note: in expansion of macro 'Q_FOREVER'
define forever Q_FOREVER
^
....\googletest\googletest/src/gtest.cc:5230:14: note: in expansion of macro 'forever'
const bool forever = repeat < 0;
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:948:19: error: expected primary-expression before 'for'
#define Q_FOREVER for(;;)
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:956:21: note: in expansion of macro 'Q_FOREVER'
define forever Q_FOREVER
^
....\googletest\googletest/src/gtest.cc:5231:19: note: in expansion of macro 'forever'
for (int i = 0; forever || i != repeat; i++) {
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:948:19: error: expected ';' before 'for'
#define Q_FOREVER for(;;)
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:956:21: note: in expansion of macro 'Q_FOREVER'
define forever Q_FOREVER
^
....\googletest\googletest/src/gtest.cc:5231:19: note: in expansion of macro 'forever'
for (int i = 0; forever || i != repeat; i++) {
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:948:19: error: expected primary-expression before 'for'
#define Q_FOREVER for(;;)
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:956:21: note: in expansion of macro 'Q_FOREVER'
define forever Q_FOREVER
^
....\googletest\googletest/src/gtest.cc:5231:19: note: in expansion of macro 'forever'
for (int i = 0; forever || i != repeat; i++) {
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:948:19: error: expected ')' before 'for'
#define Q_FOREVER for(;;)
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:956:21: note: in expansion of macro 'Q_FOREVER'
define forever Q_FOREVER
^
....\googletest\googletest/src/gtest.cc:5231:19: note: in expansion of macro 'forever'
for (int i = 0; forever || i != repeat; i++) {
^
In file included from ....\googletest\googletest\src\gtest-all.cc:41:0:
....\googletest\googletest/src/gtest.cc:5231:27: error: expected primary-expression before '||' token
for (int i = 0; forever || i != repeat; i++) {
^
....\googletest\googletest/src/gtest.cc:5231:43: error: 'i' was not declared in this scope
for (int i = 0; forever || i != repeat; i++) {
^
Makefile.Debug:39496: recipe for target 'debug/gtest-all.o' failed
mingw32-make.exe[1]: *** [debug/gtest-all.o] Error 1
The text was updated successfully, but these errors were encountered:
I have found an issue when trying to integrate google test with my project which uses Qt.
The 'forever' variable in gtest.cc:5230 is being processed as the 'forever' macro that is declared in qglobal.h:956 (from the QtCore libraries).
To fix it I just need to change the 'forever' variable name to something like 'repeats_forever', very low risk as it is just a local variable used in the for loop condition.
Code snippets and error report below:
![2019-04-16 (1)](https://user-images.githubusercontent.com/49661812/56173601-a63a1880-6031-11e9-8cec-da6304e16acd.png)
![2019-04-16](https://user-images.githubusercontent.com/49661812/56173617-b4883480-6031-11e9-8ca6-d1dde0f3581e.png)
gtest.cc:
qglobal.h:
Build Error:
....\googletest\googletest/src/gtest.cc: In member function 'bool testing::internal::UnitTestImpl::RunAllTests()':
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:948:19: error: expected unqualified-id before 'for'
#define Q_FOREVER for(;;)
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:956:21: note: in expansion of macro 'Q_FOREVER'
define forever Q_FOREVER
....\googletest\googletest/src/gtest.cc:5230:14: note: in expansion of macro 'forever'
const bool forever = repeat < 0;
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:948:25: error: expected primary-expression before ')' token
#define Q_FOREVER for(;;)
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:956:21: note: in expansion of macro 'Q_FOREVER'
define forever Q_FOREVER
....\googletest\googletest/src/gtest.cc:5230:14: note: in expansion of macro 'forever'
const bool forever = repeat < 0;
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:948:19: error: expected primary-expression before 'for'
#define Q_FOREVER for(;;)
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:956:21: note: in expansion of macro 'Q_FOREVER'
define forever Q_FOREVER
....\googletest\googletest/src/gtest.cc:5231:19: note: in expansion of macro 'forever'
for (int i = 0; forever || i != repeat; i++) {
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:948:19: error: expected ';' before 'for'
#define Q_FOREVER for(;;)
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:956:21: note: in expansion of macro 'Q_FOREVER'
define forever Q_FOREVER
....\googletest\googletest/src/gtest.cc:5231:19: note: in expansion of macro 'forever'
for (int i = 0; forever || i != repeat; i++) {
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:948:19: error: expected primary-expression before 'for'
#define Q_FOREVER for(;;)
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:956:21: note: in expansion of macro 'Q_FOREVER'
define forever Q_FOREVER
....\googletest\googletest/src/gtest.cc:5231:19: note: in expansion of macro 'forever'
for (int i = 0; forever || i != repeat; i++) {
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:948:19: error: expected ')' before 'for'
#define Q_FOREVER for(;;)
^
C:\Qt\5.8\mingw53_32\include/QtCore/qglobal.h:956:21: note: in expansion of macro 'Q_FOREVER'
define forever Q_FOREVER
....\googletest\googletest/src/gtest.cc:5231:19: note: in expansion of macro 'forever'
for (int i = 0; forever || i != repeat; i++) {
^
In file included from ....\googletest\googletest\src\gtest-all.cc:41:0:
....\googletest\googletest/src/gtest.cc:5231:27: error: expected primary-expression before '||' token
for (int i = 0; forever || i != repeat; i++) {
^
....\googletest\googletest/src/gtest.cc:5231:43: error: 'i' was not declared in this scope
for (int i = 0; forever || i != repeat; i++) {
^
Makefile.Debug:39496: recipe for target 'debug/gtest-all.o' failed
mingw32-make.exe[1]: *** [debug/gtest-all.o] Error 1
The text was updated successfully, but these errors were encountered: