看C++代码哪里出错了?

#include <iostream>
using namespace std;
void test(void);
extern int lnktest1;
const int lnktest1 = 0;
int main() {
test();
}
void test() {
int i = lnktest1;
}

/*
结果编译出一下错误:
c.cpp
c.cpp(5) : error C2373: “lnktest1”: 重定义;不同的类型修饰符
c.cpp(4) : 参见“lnktest1”的声明。
不是说extern那里是只声明不定义吗,但为什么我后面定义他又出错了?为什么?
*/

原理楼主知道的,但是extern int lnktest1;只是简单声明不定义,但下面的是用const 定义的哈,要是把const去掉就可以啦!!
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-07-19
lnktest1被你重定义了,改革名字就行了

如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。即下述两个函数声明没有明显的区别:
extern int f(); 和int f();
当然,这样的用处还是有的,就是在程序中取代include “*.h”来声明函数,在一些复杂的项目中,我比较习惯在所有的函数声明前添加extern修饰。

参考资料:http://baike.baidu.com/view/963932.htm?fr=ala0_1_1

第2个回答  2010-07-19
extern int lnktest1;
声明外部变量,应该放在共同使用的一个头文件中
比如在a.h中声明extern int lnktest1;
然后b.cpp中include<a.h>后,只要定义int lnktest1;就可以用了
在c.ppp中同样include<a.h>后,int lnktest1;就行了。

C++运行出现错误,怎么回事?
原因一:用户的电脑是运行32位的操作系统的,但运行的应用程序只适用于在64位操作系统中运行,用户强制运行就会导致自己的电脑无法加载这一应用程序,出现错误代码0xc000007b,毕竟勉强是没有幸福的。原因二:Windows系统无法处理运行应用程序所需的某些设置。原因三:部分应用程序需要以管理员身份运行。原因...

为什么我的C++运行的时候报错?
当程序试图访问数组时,会使用一个下标来指定要访问的数组元素的位置。如果这个下标超出了数组定义的起始和结束范围,就会出现这个错误。例如,如果数组只定义了从0到4的元素,而程序试图访问下标为5的元素,就会超出范围。2. 解决办法:要解决这个错误,首先要检查数组的定义和访问代码。确认数组的大小和范...

怎么检查C++程序中的错误
编译的时候出现错误,在编译器的下方的输出窗口上双击出现“error”的行会定位到代码中出错的地方。正确的代码如下:include <stdio.h> int main (){ int max(int grade_1,int grade_2,int grade_3);int grade_1,int grade_2,int grade_3,int grade_max;scanf ("%d,%d,%d",&grade_1,grad...

C++,大佬们看下这里报错是为什么?可是这代码能AC啊?!
首先我们来看 include 的部分,我们一个一个来看,iostream 不用多说了,C++标准输入输出的头文件,包含了 C++输入输出流函数,也就是经典的 cin、cout。说到 cin、cout 多说两句,cin、cout 的开销要比 C 语言下的 scanf 和 printf 慢很多,很容易影响程序运行的性能。所以对于 acmer 来说,能用...

c++中怎么看程序哪里出错
运行后下面有出错提示,双击出错的提示然后代码出错的地方会有箭头标注。

C++这代码为什么答案错误?指出并改正,好的加分!!!
第二个if语句,其目的是判断输入数是否可被5或6整除,而语句“(b==0&&c!=0)||(b!=0&&c==0)”则在判断此数是否是:能被5整除而不能被6整除的数,或,能被5整除而不能被6整除的数。那么显然这里如果输入30的倍数就会得到错误的结论。应改为:if(b==0||c==0)望采纳~若您还有不解,...

帮忙看看代码哪里有问题?
如果数组被定义为char型,那么数组名在语法上就是一个char * const类型的值(地址),可以看出这个地址是一个常量。所以在你第一次出错的位置,你试图讲一个字符串常量赋给一个数组,其实是在试图把一个指向常量的指针赋给一个不能被改变的指针,这就出现了错误。另外,你把sex定义为char型,char...

c++怎样查看出错位置
编译出错的话,直接双击那行错误提示,会跳到出错的那行代码;不过有时会不准,真正的错误出现在前面的行里;运行出错的话,可以设置断点,然后debug运行;或者F11单步运行。

我这个c++代码哪里错了
include <castdlib>这个头文件是没有的 tmp.cpp:3:10: fatal error: 'castdlib' file not found#include <castdlib> ^~~~1 error generated.你的应该是错打a了,是<cstdlib>或是<stdlib.h>,是c语言中的常用头文件 然后:tmp.cpp:16:13: error: expected ')'if(i=0;i<9-i;i++)...

请人看下这段代码错在哪里?正在学习C++希望高手不吝赐教!
include "iostream.h"int main(){ int b,c=5;const int a=1; \/\/这个是不能在中间修改他的值或者附值的 b=c+1;cout<<b<<endl; \/\/不是>> cout<< c=c\/2; \/\/这里最好不要用2.0本来你是int 型,cout<<a+b+c<<endl;return 0;} ...

相似回答