编程常见错误1

发布 2022-09-20 16:03:28 阅读 5605

1、errorc2065:“idd_dialog1”:未声明的标识符。

编译时提示errorc2065:“idd_dialog1”:未声明的标识符。

错误的可能原因及解决方法如下:

1.出错文件中没有包含资源文件id声明的文件。在出错文件中加入#include“语句。

2.工程附件包含目录的路径下没有文件。修改路径即可。

3.工程所在文件夹下存在文件,但其中没有资源id的定义,导致真正的没有包含进去,删除之。一个解决方案里面有多个工程,可能会把所有资源id的声明放到一个文件中。

在各个工程中实现对话框功能的文件中,只需包含该文件即可。但是,当新增某个资源以后,工程中会自动生成一个不知道为什么会这样),而不是在已有的文件中添加id的定义。由于工程编译的时候先从本地搜索头文件,会包含了自动生成的头文件,于是出现了上述错误。

注意:如果是智能设备程序出现此错误,应该确保和中都有相同的宏定义#defineidd_dialog1xxx,并且在中包含资源头文件。

2、errorc2471:无法更新程序数据库,fatalerrorc1083:无法打开程序数据库文件。

errorc2471:无法更新程序数据库“c:documentsandsettings...

fatalerrorc1083:无法打开程序数据库文件:“c:documentsandsettings...

解决方法:修改一下设置,就可以解决c2471:

cc++|general|debuginformationformat|c7compatible(/z7)

cc++|codegeneration|enablestringpooling|yes(/gf)

linker|generaldebuginfo|yes(/debug)

或者把在debug文件夹下的。pdb文件给删除了,f5一下就行了。

3、error无法打开预编译头文件的解决方法及预编译头原理。

1。用编辑程序,按ctrl+f7,出现下列错误:

fatalerrorc1083:无法打开预编译头文件:“debug/

解决方法:修改:项目->属性->c/c++-预编译头->不使用预编译头即可。

2。学用visualc++6.0的第一个例程就让我出了错。用向导生成第一个基于对话框的project之后,当我按照书上的源程序一个字一个字地输进去之后,始终有一个错误:

fatalerrorc1010:.找了无数次之后,我决定把向导生成的包括头文件的语句:include""保留(而这之前我是把它删掉了的,因为书上的例子没有这句。

)咦,这下就对了。这是为什么呢?我百思不得其解。

来到我的vc源**目录,我注意到每个project下面的debug文件夹都特别大,而且一个扩展名为。pch的文件占去了绝大部分,我删掉之好像对程序编译运行没有什么影响。于是抱着对。

pc**件的好奇,我在网上搜到了我疑惑之处的解答。这就是vc++6.0给我们带来的:

预编译头文件。预编译头文件(一般扩展名为。pch),是把一个工程中较稳定的**预先编译好放在一个文件(.

pch)里。这些预先编译好的**可以是任何的c/c++**,甚至可以是inline函数,只是它们在整个工程中是较为稳定的,即在工程开发过程中不会经常被修改的**。

为什么需要预编译头文件?

一言以蔽之:提高编译速度。一般地,编译器以文件为单位编译。

如果修改了一工程中的一个文件则所有文件都要重新编译,包括头文件里的所有东西(宏,preprocessor预处理),而vc程序中,这些头文件中所包括的东西往往是非常大的,编译之将占很长的时间。但它们又不常被修改,是较稳定的,为单独的一个小文件而重新编译整个工程的所有文件导致编译效率下降,因此引入了。pc**件。

如何使用预编译头文件以提高编译速度?

要使用预编译头文件,必须指定一个头文件(.h),它包含我们不会经常修改的**和其他的头文件,然后用这个头文件来生成一个预编译头文件(.pch),vc默认的头文件就是因为头文件是不能编译的,所以我们还需要一个。

cpp文件来作桥梁,vc默认的文件为这个文件里只有一句**就是:#include""。接下来要用它生成。

pc**件,涉及到几个重要的预编译指令:/yu,/yc,/yx,/fp。简单地说,/yc是用来生成。

pc**件的编译开关。在project->setting->c/c++的category里的precompiledheader,然后在左边的树形视图中选择用来编译生成。pc**件的。

cpp文件(默认即你就可以看到/yc这个开关,它表示这个文件编译了以后是否生成。pc**件(可能/yc的c表示create)。/fp指令指定生成的。

pc**件的名字及路径(可能/fp的p代表path)。/yu的u即use,工程中只要包括了。**件的文件都会有这个/yu指令。

如果选择自动automatic...的话则原来为/yc的地方就换成了/yx指令。如果选择自动,则每次编译时编译器会看以前有没有生成过。

pc**件,有则不现生成否则就再次编译产生。pc**件。

注意:a,实际上,由appzard项目向导生成的默认的头文件及cpp文件和可以是任何名字的。原因很简单。

但如果你要这样做就要记得修改相应的project->setting...下的几个预编译指(/yc,/yu,/yx,/fp)的参数。

b.在任何一个包括了将要预编译的头文件而使用了。pc**件的工程文件的开头,一定必须要是在最开头,你要包含那个指定生成。

pc**件的。**件(通过。cpp文件包括,默认为如果没包括将产生我最开头产生的错误。

如果不是在最开头包括将产生让你意想不到的莫名其妙错误,如若不信,盍为试之?

c.预编译文件。pch生成之很耗时间,而且生成之后它也很占磁盘空间,常在5-6m,注意项目完成之后及时清理无用的。pc**件以节约磁盘空间。

d.如果丢了或删了。pc**件而以后要再修改工程文件时,可将指定的/yc的。cpp文件(默认为重新编译一次即可再次生成。pc**件,不用傻傻的按f7或rebuildall

以前还碰到过另外一种情况:新建一个工程,随便找一个cpp文件,按ctrl+f7系统将会提示:fatalerrorc1083:

无法打开预编译的头文件:”debug/其中xxx是工程的名字)这种情况也是一样的原因,为vc的头文件未编译所致。也可以这样解决:

先f7,编译后再ctrf+f7。

注意:vs智能设备程序(如wm5)预编译头文件为更改设置在项目->xxxx属性->配置属性->c/c++-预编译头的右侧第一项。

4、error:无法执行添加/移除操作,因为**元素是只读的。

vc2005error:无法执行添加/移除操作,因为**元素是只读的。

出现这种现象,多数是因为你的工程所在文件夹的属性设置为了“只读”,你可以关闭解决方案,然后重新打开,就可以了,如果以后不想出现这样的情况,把工程所在的文件夹属性中的“只读”去掉,就可以了。

解决方案:1、重启vs2005

2、查看。h和。cpp文件的属性,有可能是只读的,修改属性后就可以了。

3、打开文件看看一看就知道了有些定义重复了可以手动改掉保存编辑器重新加载。

4、把你要添加事件的对话框相应的类文件(*.h和*.cpp)给关了就可以了。

5、关闭解决方案,删除。ncb文件重新添加即可。

6、实在不行就手动添加消息处理。

在begin_message_map(。。

/这里要删掉你原先已经增加过的消息隐射函数。

end_message_map()

5、程序运行出现-1.#ind,1.#inf

c/c++程序运行有时候会出现-1.#ind,1.#inf,在调试的时候输出除数为0得出的结果,inf就是infinite,就是无穷大的意思。

ind可能表示很小,不确定。

使用类似于pow,exp等等函数时常会产生一个无效数字1.#ind00,在vc下可以通过与一个确定数字比较大小来判断是否产生了无效数字,但这个方法在dev-cpp下却是行不通的。

其实解决办法很简单,使用中一个函数_isnan即可:

int_isnan(doublex);

当x是一个无效值(nan,notanumber)时,返回非零值。

否则返回06、link:上一个增量链接没有生成它;正在执行完全链接。

**。#include"iostream"

usingnamespacestd;

intmain()

cout<<"123";

return0;

link:没有找到或上一个增量链接没有生成它;正在执行完全链接。

这个不是什么错误,现在的vs2003,2005,2009有增量编译功能,就是如果你的**改动了,他们是不完全重新编译整个**的,而是只编译你所更改的部分。

出现这个提示,1.你是第一次进行编译,这时当然没有生成过可执行文件,也就无法增量链接了。

2.你上一次编译的时候有错误,没有生成可执行文件。

7、clistctrl的nm_rclick消息编译错误、reinterpret_cast

在对话框中类中添加对clistctrl控件右键处理的时候出现如下错误:

errorc2440:'reinterpret_cast':cannotconvertfrom'nmhdr*'to'nmitemactivate'conversionrequiresaconstructororuser-defined-conversionoperator,whichcan'tbeusedbyconst_castorreinterpret_cast

需要把:lpnmitemactivatepnmitemactivate=reinterpret_cast(pnmhdr);

改为:lpnmitemactivatepnmitemactivate=reinterpret_cast(pnmhdr);

参考:8、无法解析的外部符号_winmain,该符号在函数___tmaincrtstartup中被引用。

一,问题描述。

无法解析的外部符号_winmain@16,该符号在函数___tmaincrtstartup中被引用。

个无法解析的外部命令。

errorlnk2001:unresolvedexternalsymbol_winmain@16

debug/

高1英语常见错误

1.找准关键词语。有时题干中带有对解题起着关键作用的词语,如果能迅速找准这些词语,再结合各选项的意义和特点,就能很快选出正确答案。例如 the foreign minister saidour hope that the two sideswill work towards peace.a.this...

托福作文常见的23种错误 1

考生必看 托福作文常见的23种错误。关于toefl考试作文相信大家都买了不少参考书,并且背诵了不少好段子,但是有的考生依旧作文不理想,究其原因在写作时可能不太在意,好了,让我们看看专家怎么评点toefl考试作文的常见错误的 1.结构不平行例 当使用连词将一系列的单词联接起来的时候,应当使用词性相同或...

常见考研英语错误

1 错误答案的10个陷阱 过分绝对 无中生有 正反混淆 就事论事 以偏概全 夸大内容 偷换概念 增减词汇 答非所问 文化迷惑。正确答案的4个特点 照抄原文 小心答非所问 同义替换 全面概括 答案分配均匀。2 做题时的三个一切 一切从大纲要求出发 主题 细节,此最重要 一切从解题需要出发 一切从原文事...