海湾合作委员会警告"set but not used "
GCC warning "set but not used "
我在编译C++源代码时收到以下警告。
变量'tab'设置但未使用[-Wunused但设置变量]
我有一段代码:编译显示上面提到的警告,请建议我为什么编译显示警告。当我运行程序时,我得到:分段故障(核心转储)
例如1
const int n = 10000;
int main() {
char tab[n][n];
for(int x = 0; x < n; x++)
for(int y = 0; y < n; y++)
tab[x][y] = x + y;
但如果我使用全局变量,我的程序运行良好。
例如2
const int n = 10000;
char tab[n][n];
int main() {
for(int x = 0; x < n; x++)
for(int y = 0; y < n; y++)
tab[x][y] = x + y;
请再次建议我为什么使用Ex.1 编译show me警告
I假设您的底部t[n][n]实际上是tab[n][n]
您从未读取过变量。某些编译器可能会尝试优化这个变量,因为它似乎不会影响任何东西。
如果变量在全局范围内,那么编译器很难确定它是否在其他地方使用,这样它就不会抱怨。
如果你在某个地方读到它,那么消息就会消失
int a = t[n][n];
但是,您当然会得到变量a的消息,现在
您正在填充一个数组,但永远不要使用/读取这个数组。数组在函数结束时过期。
当它是全局的时,编译器假设您要在其他地方访问这个数组。所以它没有抱怨。
相关文章:
- 为什么我无法更改"set<set>"循环中的值<int>
- 对于set上的循环-获取next元素迭代器
- 在声明中合并两个常量"std::set"(不是在运行时)
- 有没有办法对std::unordered_set、std::unrdered_map、std::set、std::map
- 将 std::set 与基于键的比较器一起使用
- 如何使用set实现无序数据结构?
- 使用运算符调用 void 函数时出错<set>
- 修改"std::set"中用户定义类型的值
- 生成提升::hana::set 的常量表达式问题
- 如何在构造函数参数中初始化"std::set"?
- 如何使用 lower_bound/upper_bound 从 std::set 获取索引号?
- 如何在 C++ 中转发声明 std::set?
- 重构使用动态强制转换的 std::set 的比较运算符
- set::find 查找不存在的元素
- 为什么 std::set.erase(first, last) 会影响从中获取 (first, last) 的容器?
- 将 std:set<int32_t> 复制到 std::set <uint32_t>的好方法
- 错误 C2676:std::set::const_iterator 没有运算符 + 函数?
- "Variable Array set but not used"
- 海湾合作委员会警告"set but not used "
- Warning: Wunused-but-set-variable