首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++初学者:为什么我的编译器会根据我的循环返回"name not found“?

C++初学者在编写循环时,如果编译器返回"name not found"的错误信息,通常是因为在循环中使用了未定义的变量或函数名。这种错误可能是由以下几种情况引起的:

  1. 变量或函数名未声明:在循环中使用的变量或函数名没有在循环之前进行声明或定义。编译器会在编译过程中检查变量和函数的声明,如果找不到对应的声明语句,就会报错。解决方法是在循环之前添加正确的声明语句。
  2. 变量或函数名拼写错误:在循环中使用的变量或函数名可能存在拼写错误,导致编译器无法找到对应的标识符。检查循环中使用的变量和函数名的拼写是否正确,并进行修正。
  3. 变量作用域错误:在循环中定义的变量可能超出了其作用域范围,导致在循环外部无法访问。如果在循环外部需要使用该变量的值,可以将变量的定义放在循环外部,或者使用适当的作用域控制语句(如{})来限定变量的作用域。
  4. 编译器版本或设置问题:某些编译器可能存在特定的设置或版本问题,导致错误的报错信息。可以尝试更新编译器版本或检查编译器的设置,以确保其正常工作。

总结起来,当编译器返回"name not found"的错误信息时,需要检查循环中使用的变量和函数名是否正确声明、拼写正确,并确保其作用域范围正确。如果问题仍然存在,可以尝试更新编译器版本或检查编译器的设置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

萌新学习C++容易漏掉知识点看看你中招了没有(二)

,这就是为什么书读百遍,其义自见,可能夸张了,不知道你们是怎样,一本书多读,确实能带给我不同知识,这也是为什么想起来写总结,加了一个群,看到萌新们问问题大多是他们看书漏掉知识,这些人一定是只看了一遍或者没看...为什么漏掉知识,个人认为是这样,最起码是,比如这一章讲for,一看语法,去,就怎么简单?...2. if else if else 结构 有些初学者可能对if else变种有一些疑惑,不知道怎么一个执行顺序,如果写成另一种形式,你可能更好理解变种。...4. == / = 错误防范 对于初学者来说,这可以算一个非常好技巧了 初学者经常将=写成==,将==写成=,我们只要将判断常量放在左边就可以让编译器来检查这个错误。...C++规定,||运算符是一个顺序点,也就是说,先修改左侧值,再对右侧值进行判断。 所以在判断i==j时候,i值是7,而不是6。C++说法是左边子表达式优先于右边子表达式。 6.

46251

extern C作用

,出现了如下异常,好像是没有找到Java_com_kobe_MainActivity_stringFromJNI这个方法,为什么呢,明明也写了这个方法。...found for "; detail += m->PrettyMethod(); //jni_short_name就是Java_com_kobe_MainActivity_stringFromJNI...总结 1.C不支持函数重载,编译之后函数名不变 2.C++支持函数重载,编译之后函数名变 3.静态注册JNI接口,需要考虑C++编译之后函数名变化问题,所以需要加上extern "C"关键字...4.动态注册JNI接口,就不用担心这个问题,所以不用加extern "C" 进一步思考 很多时候我们碰到一些头文件中声明了C语言函数,但是这个头文件会被C语言或者C++语言使用。...幸好我们有一种很好方法可以解决这个问题,那就是使用C++宏"__cplusplus",我们可以通过这个宏来判断当前编译器是不是c++编译器

67930

C++内存模型,我们常说堆栈究竟指什么?

好在,对于初学者而言,我们也不必这么深入,对一些主流编程语言内存模型有一个大概认知就可以了。...之所以叫做栈区,是因为存储这些信息数据结构是栈。栈特点是先进后出,编译器每次执行最顶端函数。 所以我们常用递归算法本质上就是利用了这里栈区,免去了我们自己手动编写栈工作。...因为它们分别属于C++和C语言,并不是通用,因为编译器版本问题,可能导致不可预测问题发生,极大增加debug成本。...根据我个人经验,内存泄漏引发问题是相对来说最难排查和修复,更多需要依赖工程师素养在事前规避。...显然,这样无疑影响程序运行效率。 所以我们是很难用一句好或者不好来评价C++内存管理,更多还是要基于具体问题场景。

66120

自学Python发现很难,入门方法到底是什么?「干货放送」

首先想说是,对于想学好编程的人来说,无论从哪一门语言开始入手,语言本身其实并不是我们最应该关心,至少不是作为一个初学者首先关心。...然而具体根据我们需要实现什么来选择编程语言,比如对于安卓来说,就是java,xml等,对于ios来说,就是object c之类。...而至于选择什么语言呢最开始其实并不是那么重要,甚至可以运用伪代码来学习,但是为了方便初学者学习,能实际实现语言更加能够让初学者理解编程。...计算机科学入门第一课除了之前说那些为什么要学编程,什么是编程一些理论话以外,第一个实际东西就是所有程序员都知道Hello World(至少对于大多数情况下来说)。...函数也恰好体现了人与计算机交流一种途径,人给予函数参数,函数给予我们返回值(或者有时函数是void类型,也就是不返回任何值,但是void通常也是完成我们需要特定操作),也恰好是信息交换一种方法。

27210

编程智慧

不管语言提供了多么“神奇”,“新”特性,基本都只用经过千锤百炼,觉得值得信赖那一套。 现在针对一些有问题语言特性,介绍一些自己使用代码规范,并且讲解一下为什么它们能让代码更简单。...if (condition2) { break; } } 当condition成立时候,break退出循环。...这种写法,通常被叫做更加“函数式”,因为只赋值一次。 如果漏写了else分支,Java编译器是不会放过。它会抱怨:“在某个分支,s没有被初始化。”...很多初学者,都会忘记检查read返回值是否为-1,觉得每次调用read都得检查返回值真繁琐,不检查貌似也相安无事。这种想法其实是很危险。...它只会从lambda返回,而且由于那个lambda(Consumer.accept)返回类型必须是void,编译器会报错,说你返回了String。

40810

【Rust问答】关于函数不写return时候返回疑惑

unit (),而if里面的0却是integer,所以报错了 知道下面2种做法可以编译通过: 把1放进else里面 在0前面显式加上return 现在问题来了: 这个编译不通过函数,标注了返回类型为...i32,而且函数体内怎么看返回也不是()啊,为什么编译器认为返回是()类型呢?...--- javasaint 2019-12-18 17:57 来分析一下,rust初学者,可能术语用得不太恰当,但差不多应该是这个意思 fn r(n: i32) -> i32 { if n > 0 {...0 } 1 } rust编译器认为函数体是由一个语句和表达式组成 if n > 0 { 0 } 和 1 因为没有else,所以它不认为if 代码块是表达式一部份 所以做为函数返回是 1 这个表达式...第一个语句中代码块最后一行是表达式,但其它本身又不是条件赋值语句,所以编译器认为代码块应该返回是(),也就是unit类型 c5soft 2019-12-18 21:26 if 作为rust表达式

2.7K20

C++初阶 类和对象(下)

前言:C++初阶系列,每一期博主都会使用简单朴素语言将对应知识分享给大家,争取让所有人都可以听懂,C++初阶系列持续更新,上学期间将不定时更新,但总会更 一、拷贝构造函数 1.1 什么是拷贝构造函数...拷贝构造函数只有单个形参,该形参是对本类类型对象引用(一般常用const修饰),在用已存在类类型对象创建新对象时由编译器自动调用。 1.2 为什么得是引用?...为什么这个形参得是被类对象引用呢,直接传递这个要拷贝目标不可以吗,不是一样操作吗。..._day; } private: int _year; int _month; int _day; }; int main() { } 现在编译器很智能,直接就阻止了你无穷递归行为,为什么会发生无穷递归呢...main中依然存在,因此使用Date&类型返回值可以令编译器效率得到提高。

15110

【C→C++】打开C++世界大门

那现在就想在函数f2()打印全局a,有没有办法? 有的: 确实打印出来了,那那两个冒号是什么东西啊,为什么在a前面加了这个符号就打印全局a了? ,::叫做 作用域限定符。...但是C++引入了函数重载就支持这种情况出现了: 这样看起来我们是调用同一个函数,但是程序自动根据我们传参数类型进行匹配,如何匹配我们后面也介绍到。 在有些时候还是很方便。...5.2 C++支持函数重载原理–名字修饰 首先大家思考一个问题: 我们上面提到C++中出现函数重载情况时候,我们去调用时程序据我们传参数类型去匹配对应函数。...拿为什么呢? 大家可能会想,这类型都不一样,肯定不行了。 刚开始也是这么想,但是: 欸,为什么啊? 为什么加一个const就可以了呢?x就可以成为i引用(别名)了吗?...因为C++编译器会在调用内联函数地方将函数直接展开,这样的话与普通调用相比,产生指令就可能变多,所以最终生成可执行程序可能变大。

15210

数组下标越界与内存溢出有关吗_数据量过大数组报下标越界

关于C/C++为什么不对数组下标是否越界做检查,可以参考: http://www.xuebuyuan.com/967089.html 因为编译器不会自动检测你数组下标是否越界,而是把这个任务交给了程序员自己...这是因为VS2013这个编译器在处理数组下标时,只认为当引用下标等于数组元素个数时下标越界(可能是怕初学者把数组下标当成是以0开始吧),别的情况别不回去检测和处理(当我输入值大于等于11,程序都不会报错...而在Linux(CentOS6.5)里面运行时,就是我们开头说那种下标越界情况,不管你下标咋越界,编译器都不会对数组下标做边界检查。...这里初始化时,for循环一共循环了101次,所以是要给数组初始化101个元素值,而数组只有100个元素,这样就导致了内存溢出。...因此,虽然数组在C语言中是个很强大东西,但在应用时一定要注意,千万不要出现下标越界情况,因为这样造成不可想象错误。

1.7K60

关于CC++ 一些自己遇到问题以及解惑

回到问题本身,询问了这位群友,在他电脑上下确确实实是造成了死循环,用是CodeBlocks,所以得出一个结论就是循环里发生数组越界在某些IDE编译运行,导致死循环。...再往下看,通过搜索,了解到==导致死循环编译器内存分配有关,若内存递减分配会出现死循环,递增分配则不会,==并通过在不同IDE输出内存地址,确实验证这个结论成立. ?        ...那么为什么产生这样效果呢,揭秘如下. 若是内存递减分配,对于数组和i内存分配如下: ? 若是内存递增分配,对于数组和i内存分配如下: ?        ...经测试,博主所使用dev和vs2015,以及一些编译器会在数组和i地址之间,用一小块内存,用来避免两者,从而一定程度上解决死循环问题,但当越界过大,还是造成死循环.所以在使用对内存操作上,应格外小心...这位网友问题很有意思,这个案例也是很好图示了下面要说的话,这是众多初学者一个理解错误,每一本语言书都会告诉你单精度类型有效范围是7位,双精度类型有效范围15位,这就给大家造成一种错觉,认为只能存

66341

C语言不是最好,却是最爱~

同时,也会关注现代编程语言及其发展趋势,而且还使用 Rust 编写了自己业务爱好项目。那么,为什么没有抛弃 C 而选择其他语言呢?对于 C++看法又是如何呢?...另外,我们究竟应该使用哪个 C++版本功能,并没有一套标准方法。Rust 在包范围内提供了版本管理。据我所知,C++也曾尝试过引入“代际”概念来实现同样功能,但没有成功。...当然指的是“未定义行为”以及编译器处理方式。这已成为一大毒瘤(只要你代码依赖于二进制补码算术,就会被认定具有未定义行为,编译器抛弃整块代码)。...例如,如果知道目标及其使用了两个协处理器,为什么编译器会选择另一种方式,仅仅是为了获得理论上优化?同样问题也适用于移位运算。...如果知道 x86 忽略移位偏移量高比特,在 ARM 上负左移相当于右移,那么为什么不能专门针对该体系结构编写程序呢?毕竟,连整数大小在不同平台上都不一样。

12810

为什么十分喜欢C,却很不喜欢C++

同时,也会关注现代编程语言及其发展趋势,而且还使用 Rust 编写了自己业务爱好项目。那么,为什么没有抛弃 C 而选择其他语言呢?对于 C++看法又是如何呢? ?...另外,我们究竟应该使用哪个 C++版本功能,并没有一套标准方法。Rust 在包范围内提供了版本管理。据我所知,C++也曾尝试过引入“代际”概念来实现同样功能,但没有成功。...当然指的是“未定义行为”以及编译器处理方式。这已成为一大毒瘤(只要你代码依赖于二进制补码算术,就会被认定具有未定义行为,编译器抛弃整块代码)。...例如,如果知道目标及其使用了两个协处理器,为什么编译器会选择另一种方式,仅仅是为了获得理论上优化?同样问题也适用于移位运算。...如果知道 x86 忽略移位偏移量高比特,在 ARM 上负左移相当于右移,那么为什么不能专门针对该体系结构编写程序呢?毕竟,连整数大小在不同平台上都不一样。

72610

两个小巧好用C语言编辑器

近期有一些新关注伙伴在后台经常留言刚入门 C语言 该选择什么 C语言 编辑器好呢?都说欲善其事必先利其器,网络上也有很多不同类型编辑器,让人很难进行抉择!C语言 编辑器选择哪个好?...所以我今天根据我个人使用情况,整理了几款C语言编辑器分享给大家(文末留了获取方式),需要看官看下文了解一下哟~ 一、Dev-C++ 先说一下 VC++6.0 和大多数人一样 C语言 刚入门时候使用是...提供高亮度语法显示,以减少编辑错误,还有完善调试功能。 是一个初学者 C/C++ 编译器首选。(编译器获取方式在文末) 当然这个编译器只是适合比较小轻量级集成编译器。...小编给大家推荐一个学习氛围超好地方,C/C++交流企鹅裙:870963251!适合在校大学生,小白,想转行,想通过这个找工作加入。...A:c4droid是款Android设备上C/C++程序编译器,默认以TCC(Tiny C Compiler)为编译器,可以选择安装gcc插件软件支持代码高亮,编译时间随cpu主频而定,主频越高编译越快

3.2K00

Lua: 好, 坏, 和坑爹

虽然已经见过很多提到Lua好和坏列表 (例如, Lua优势, 为什么使用Lua, 为什么Lua没有得到广泛地应用, Lua优点,Lua好和坏, Lua对比JavaScript, 还有Lua陷阱...虽然这说不上非常专业, 也没有覆盖到语言每个方面 (如 math 和string 库), 但这是根据我编程语言经历得出来....作为一个嵌入式可扩展语言 提供了简单直接 C/C++交互接口....适合初学者和非程序员简洁语法. Lua 从 Modula (Pascal分支, 已经广泛应用于教育做为教学语言)借鉴了多数控制语法....循环控制变量默认是局部, 循环完了就没了. for 循环极限和步进值是 缓存过; 这意味着 for i = init(), limit(), step() do ... end 中三个函数

1.7K10

C++ 初阶 类和对象(中)

前言:C++初阶系列,每一期博主都会使用简单朴素语言将对应知识分享给大家,争取让所有人都可以听懂,C++初阶系列持续更新,上学期间将不定时更新,但总会更 一、构造函数 1.1为什么要有构造函数...因此在C++中就诞生了一个超级好用东西,它就是构造函数,它作用也是很简单粗暴,那就是在你创建了一个对应类(结构体)时候,编译器根据你书写构造函数对你创建类进行初始化。...妈妈再也不用当心忘记初始化类了~ 1.2构造函数特性 1. 无返回值。 2.函数名与类名相同。 3. 对象实例化时编译器自动调用对应构造函数。 4. 构造函数可以重载。...先来讲一下第一点,无返回值,这里返回值是包括void,也就是连void都不用,直接写构造函数名就行了,这时候我们就会接触到第二点,函数名与类名相同,比方说我们要创建一个关于日期类,给这个类取名为...无参数无返回值类型。 3. 一若未显式定义,系统自动生成默认析构函数。注意:析构函数不能重载 4. 对象生命周期结束时,C++编译系统系统自动调用析构函数。

13610

C++模版本质

因为编译器不知道数据类型,那些对void*指针进行偏移操作(算术操作)非常危险(GNU支持),所以操作特别小心,这个给实现增加了复杂度。...,条件判断,递归循环等能力,这些能力促使模板拥有图灵完备计算能力。...选好模板类之后,编译器进行模板类实例化--记带入实际参数类型或者常量自动生成代码,然后再进行通常编译。...编译器从函数实参推导缺失模板实参。...模板多个实例很有可能隐式地增加二进制文件大小等,所以模板在某些情况下有一定代价,一定要在擅长地方发挥才能; 如何降低门槛,对初学者更友好,如何降低复杂性,这个是C++未来发展重要方向。

1.7K30

只有会编程的人才会用goto~

也是,看过所有初学者书上都在贯穿着这一思想,不明白,为什么大家都不让使用goto语句,如果真的像大家说那样恐怖,那么为什么goto语句至今还没有被移除出去。...从1969年C语言诞生到现在,经过几十年发展goto语句不仅没有被标准委员移除,相反,在许多其他语言也被继承了下来,如:Java、C#、C++,是不是很奇怪,如果goto真的给我们带来灾难,为什么主流编程语言里面一直还在使用...让每个接口只有一个返回路径,不管在哪个逻辑出现问题,都通过goto语句跳转到函数最后返回,确保程序不会崩溃。...跳出后外层循环继续执行,这种情况下,使用goto精准地达到我们目标。...死循环有while(1)循环实现方式更多。 goto语句后面不准直接使用大括号,否则编译器可能会报错。实际编码时尽量避免。无法避免时可以写上一句无意义代码。哪怕是一行日志输出语句。

77030

java getclassloader_java-关于getClass().getClassLoader()

大家好,又见面了,是你们朋友全栈君。...:) 昨天code总在Integer.class.getClassLoader().getResource(“*********”);这一句抛出空指针异常,定位为getClassLoader()返回...为什么说它神龙见首不见尾呢,因为你根本无法在Java代码中抓住哪怕是它一点点尾巴,尽管你能时时刻刻体会到它存在,因为java运行环境所需要所有类库,都由它来装载,而它本身是C++程序,可以独立运行...这里jdk告诉我们:如果一个类是通过bootstrap 载入,那我们通过这个类去获得classloader的话,有些jdk实现是返回一个null,比如说用 new Object().getClass...().getClassLoader()的话,返回一个null,这样的话上面的代码就会出现NullPointer异常.所以保险起见我们最好还是使用我们自己写类来获取classloader(“this.getClass

34610

iOS 编译器__Attribute__入门指南

这是一个可以给对象或函数声明特性编译器指令,目的是让编译器做更多错误检查和优化。...1、内存对齐,深度优化 // aligned 用来调整内存对齐中每行位数 // 如果设置少于4,编译器自动优化成4 // 最大也只能是8 struct stu{ char sex;.../* OC中可以是用 #param mark - xxxx swift使用 #MARK - xxxxx */ // 在父类中某个被重写方法上添加这个,编译器提醒子类重写方法中调用...// 生成独立网络 NSThread 时启动一个 NSRunLoop 循环处理,以确保分离线程在应用程序生命周期内继续执行。...,deprecated=10.6,obsoleted=10.7))); // 这个参数列表有没有感觉像 @#available() 2、C 中重载一个C++函数 // 在C中重载一个C++函数,C中函数重载是使用可重载属性引入

92520
领券