| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5567 人关注过本帖
标题:error C2065: “S”: 未声明的标识符 文件包含问题 着急
只看楼主 加入收藏
FjC1990
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-11-2
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:14 
error C2065: “S”: 未声明的标识符 文件包含问题 着急
我编了两个小程序,目的是想fi.c文件包含f2.c。软件是VS2010
f1.c程序:
int S;
int C;
#include"f2.c"
#include"stdio.h"
void main()
{int x;
int y;
printf("请输入长和宽:\n");
scanf("%d%d",&x,&y);
fuc(x,y);
printf("%d%d\n",S,C);
}


f2.c程序:
int fuc(int x,int y)
{S=x*y;
C=2*(x+y);
}



出现的问题:1.\文件包含\f2.c(2): error C2065: “S”: 未声明的标识符
 2.\文件包含\f2.c(2): error C2065: “C”: 未声明的标识符   
3.f2.c(4): warning C4716: “fuc”: 必须返回一个值
搜索更多相关主题的帖子: include warning 软件 
2014-11-02 22:09
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:5 
在f2.c开头加入
extern int S;
extern int C;
那个警告看着也不爽,改成void。

重剑无锋,大巧不工
2014-11-02 23:37
FjC1990
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-11-2
收藏
得分:0 
回复 2 楼 beyondyf
加上去出现的新问题:
1>f2.obj : error LNK2005: _fuc 已经在 f1.obj 中定义
1>f1.obj : error LNK2001: 无法解析的外部符号 _C
1>f2.obj : error LNK2001: 无法解析的外部符号 _C
1>f1.obj : error LNK2001: 无法解析的外部符号 _S
1>f2.obj : error LNK2001: 无法解析的外部符号 _S
1>d:\users\administrator\documents\visual studio 2010\Projects\文件包含\Debug\文件包含.exe : fatal error LNK1120: 2 个无法解析的外部命令



全局变量不是在f1.c申明过了么,改了多种就是经常出现两种问题:C、S和fuc重复定义的问题
本来是编这个小程序想试试文件包含的,都是.c的文件。
2014-11-03 12:16
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
你这个问题的实质是如何在2个不同的源文件中 共享使用一个全局变量的问题

其实b版已经给出答案了  不知道你的为什么调试不通

你看一下这个测试

vt.cpp 的源码
程序代码:

extern int S;   //这里是声明变量(注意是声明而不是定义)

void func(int x,int y)
{
    S=x*y;
}


测试.cpp源码

程序代码:
#include <stdio.h>
#include "vt.cpp"

int S;  //注意这里是定义全局变量  (不是声明,而且必须是全局的)

int main(void)
{

    func(7,8);
    printf("%d\n",S);
    return 0;
}

DO IT YOURSELF !
2014-11-03 13:28
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用wp231957在2014-11-3 13:28:51的发言:

你这个问题的实质是如何在2个不同的源文件中 共享使用一个全局变量的问题
 
其实b版已经给出答案了  不知道你的为什么调试不通
 
你看一下这个测试
 
vt.cpp 的源码
 
 
extern int S;   //这里是声明变量(注意是声明而不是定义)
 
void func(int x,int y)
{
    S=x*y;
}
 
 
测试.cpp源码
 
 
#include  
#include "vt.cpp"
 
int S;  //注意这里是定义全局变量  (不是声明,而且必须是全局的)
 
int main(void)
{
 
    func(7,8);
    printf("%d\n",S);
    return 0;
}

包含cpp文件好像很不规范
2014-11-03 14:39
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 5 楼 zklhp
规范真不晓得   不过我觉得就是包含了一个文本文件  即使是#include "vt.txt"  也可以正确运行

DO IT YOURSELF !
2014-11-03 14:44
FjC1990
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-11-2
收藏
得分:0 
回复 6 楼 wp231957
图片附件: 游客没有浏览图片的权限,请 登录注册

一样的程序还是出现:1>测试.obj : error LNK2005: "void __cdecl func(int,int)" (?func@@YAXHH@Z) 已经在 vt.obj 中定义
1>d:\users\administrator\documents\visual studio 2010\Projects\wenjian1\Debug\wenjian1.exe : fatal error LNK1169: 找到一个或多个多重定义的符号


我是跪了,百度几种方法,试了也无效。难道是我软件测试问题。
2014-11-03 16:06
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
你的f2.c修改了没  你的是fuc 我的是func

DO IT YOURSELF !
2014-11-03 16:26
FjC1990
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-11-2
收藏
得分:0 
回复 8 楼 wp231957
我特地有新建工程用你的程序,也是.cpp文件,一样的程序。不知道是不是VS设置问题。
2014-11-03 16:34
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
把你的2个文件打包传上来

DO IT YOURSELF !
2014-11-03 21:12
快速回复:error C2065: “S”: 未声明的标识符 文件包含问题 着急
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028677 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved