C++ Qt:Wshadow嵌套foreach上的警告
我在Qt项目上启用了编译器标志“-Wshadow”。现在,对于项目中的每个嵌套foreach循环,我都会得到一个警告。看起来,foreach宏使用的标识符在嵌套的foreach循环中重复 快速示例:C++ Qt:Wshadow嵌套foreach上的警告,c++,qt,foreach,compiler-warnings,C++,Qt,Foreach,Compiler Warnings,我在Qt项目上启用了编译器标志“-Wshadow”。现在,对于项目中的每个嵌套foreach循环,我都会得到一个警告。看起来,foreach宏使用的标识符在嵌套的foreach循环中重复 快速示例: QStringList listA, listB; foreach (QString a, listA) { foreach (QString b, listB) { qDebug() << a << b; } } QStringList列表
QStringList listA, listB;
foreach (QString a, listA) {
foreach (QString b, listB) {
qDebug() << a << b;
}
}
QStringList列表a、列表b;
foreach(QString a,listA){
foreach(QString b,listB){
qDebug()foreach
宏创建一个变量\u容器
,如果嵌套另一个foreach
宏,那么在不同的作用域中会有两个同名的变量,内部作用域中的变量将外部作用域中的变量隐藏起来。也许您应该尝试改用它?为什么不直接使用c++11
f或者为此?或者尝试一下BOOST\u FOREACH
。实际上,它们都不如c++11
的FOREACH好,但是..看看下面的讨论:
Test.cpp:46:9: warning: declaration shadows a local variable [-Wshadow]
foreach (QString b, listB) {
^
/usr/include/qt5/QtCore/qglobal.h:911:21: note: expanded from macro 'foreach'
# define foreach Q_FOREACH
^
/usr/include/qt5/QtCore/qglobal.h:857:47: note: expanded from macro 'Q_FOREACH'
for (QForeachContainer<__typeof__(container)> _container_(container); \
^
Test.cpp:45:5: note: previous declaration is here
foreach (QString a, listA) {
^
/usr/include/qt5/QtCore/qglobal.h:911:21: note: expanded from macro 'foreach'
# define foreach Q_FOREACH
^
/usr/include/qt5/QtCore/qglobal.h:857:47: note: expanded from macro 'Q_FOREACH'
for (QForeachContainer<__typeof__(container)> _container_(container); \
^