首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在c中使用'"#include“和这个链接错误?

在c中使用'"#include“和这个链接错误?
EN

Stack Overflow用户
提问于 2014-01-23 09:26:38
回答 4查看 230关注 0票数 2

为什么我不能在VC6.0中使用#include "getline.c"strindex.c

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                              -----test30src.c------

#include <stdio.h>
#include "getline.c"
#include "strindex.c"

#define MAXLINE 1000

char pattern[] = "ould";

int main()
{
    char line[MAXLINE];
    int found = 0;
    while(getline(line, MAXLINE) > 0)
        if(strindex(line, pattern) >= 0){
            printf("%s", line);
            found++;
        }

    return found;
}

                                ------getline.c------
#include <stdio.h>

int getline(char s[], int lim)
{
    int c, i;
    i = 0;

    while(--lim > 0 && (c = getchar()) != EOF && c != '\n')
        s[i++] = c;
    if(c=='\n')
        s[i++] = c;
    s[i] = '\0';
    return i;
}
                               -----strindex.c-----
int strindex(char s[], char t[])
{
    int i, j, k;

    for(i = 0; s[i] != '\0'; i++){
        for(j = i, k = 0; s[j] == t[k]; j++, k++)
            ;
        if(k > 0 && t[k] == '\0')
            return j;
    }

    return -1;

}

错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--------------------Configuration: test30 - Win32 Debug--------------------
Linking...
getline.obj : error LNK2005: _getline already defined in test30src.obj
strindex.obj : error LNK2005: _strindex already defined in test30src.obj
Debug/test30.exe : fatal error LNK1169: one or more multiply defined symbols found
EN

回答 4

Stack Overflow用户

发布于 2014-01-23 09:29:24

您应该包含string.h .h,而不是getline.c

票数 1
EN

Stack Overflow用户

发布于 2014-01-23 09:39:11

不能包含包含定义的文件,否则最终会出现相同函数的多个实例。创建只包含声明的头文件。

getline.c (定义)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include "getline.h"
int getline(char s[], int lim) { ... }

getline.h (仅限声明)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#ifndef GETLINE_H    
#define GETLINE_H
int getline(char s[], int lim);
#endif

main.c (仅包含标头)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include "getline.h"
票数 1
EN

Stack Overflow用户

发布于 2014-01-23 09:39:53

默认情况下,大多数IDE将编译所有.c文件。在这里,它将编译一次getline.cstrindex.c,并在编译testsrc30.c时进行第二次编译,其中包括另外两个文件。请记住,#include指令只是复制所包含文件的内容。

在链接时,一些符号被发现两次,链接器无法处理歧义-

使用#include的标准方法是使用包含函数声明的头文件(.h)。

示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//getline.h

#ifndef GETLINE_H  //Header guard - avoid multiple inclusion
#define GETLINE_H
#include <stdio.h>

int getline(char s[], int lim); //function declaration

#endif // GETLINE_H

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//getline.c

#include "getline.h"

int getline(char s[], int lim)  //declaration
{
    // Implement whatever your function does
}

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// test30src.c
#include "getline.h"

int main(void)
{
    // Put your code here
}

在某些情况下,包含.c文件可能是可以接受的。但在这种情况下,您应该确保这些.c文件不会自行编译和链接。请参阅此相关问题:Including one C source file in another?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21304099

复制
相关文章
[快学Python3]INI文件读写
概述 ini是我们常见到的配置文件格式之一。 ini是微软Windows操作系统中的文件扩展名(也常用在其他系统)。 ini“初始化(Initial)”的缩写。正如该术语所表示的,INI文件被用来对操作系统或特定程序初始化或进行参数设置。 其基本组成形式如下: [section_1] key1 = value1 key2 = value2 key3 = value3 key4 = value4 [section_2] key1 = value1 key2 = value2 key3 = value3 ke
苦叶子
2018/04/09
2.3K0
[快学Python3]INI文件读写
概述 ini是我们常见到的配置文件格式之一。 ini是微软Windows操作系统中的文件扩展名(也常用在其他系统)。 ini“初始化(Initial)”的缩写。正如该术语所表示的,INI文件被用来对操作系统或特定程序初始化或进行参数设置。 其基本组成形式如下: [section_1] key1 = value1 key2 = value2 key3 = value3 key4 = value4 [section_2] key1 = value1 key2 = value2 key3 = value3 ke
苦叶子
2018/04/09
1.3K0
[快学Python3]INI文件读写
概述 ini是我们常见到的配置文件格式之一。 ini是微软Windows操作系统中的文件扩展名(也常用在其他系统)。 ini“初始化(Initial)”的缩写。正如该术语所表示的,INI文件被用来对操作系统或特定程序初始化或进行参数设置。 其基本组成形式如下: [section_1] key1 = value1 key2 = value2 key3 = value3 key4 = value4 [section_2] key1 = value1 key2 = value2 key3 = value3 ke
苦叶子
2018/04/09
1.4K0
ini配置文件以及利用python管理ini文件
在python里面有一个叫做configparser的module,可以用来操作ini文件,从而方便进行配置文件的管理工作.
qsjs
2021/03/04
1.7K0
python 读写ini文件
如果某个section已经存在了,在写入的时候不能够再使用config.add_section(‘Title1’)这个函数了,这样会报错,所以,我们需要进行判断,先判断Title1是否存在,然后再进行操作 例子:
matinal
2023/10/14
2240
ini 文件操作指南
  ini 类型文件通常作为程序的初始化文件。不同于我们常见的配置文件通篇 key-value 的键值对形式,ini 文件在键值对的基础之上还有分类节点,比如我们常见的 Mysql 数据库的初始化配置文件 my.cnf或my.ini,其内容格式通常是如下这样的:
用户1615728
2019/10/19
2K0
ini 文件操作指南
#PY小贴士# 我的文件为何无法写入
1. 搞错了当前目录,自以为是在某个目录下,其实不是。此情况易发于使用 IDE 的时候,因为 IDE 的执行目录并不一定是当前 py 文件所在目录。可以通过 print(os.getcwd()) 来查看当前路径。
Crossin先生
2019/12/18
1.6K0
执行py文件需要可执行权限吗?
这个问题描述起来有点违反直觉,要执行一个文件难道不应该需要可执行权限吗?让我们先来看一个例子:
DechinPhy
2021/05/21
1.7K0
pytest测试框架系列(4)-pytest.ini和conftest.py文件
pytest测试框架的比较重要的两个文件就不得不说下pytes.ini和conftest.py文件。
搁浅同学
2022/07/21
9820
pytest测试框架系列(4)-pytest.ini和conftest.py文件
Pytest(十一) pytest ini文件
我们在执行的时候,可以不增加这些参数,addopts就是我们运行的时候所最近的命令
雷子
2022/04/06
1.5K0
Pytest(十一) pytest ini文件
【vbs】vbs写ini文件
这两天在折腾给一个项目打安装包,第一次接触软件打包,用的Advanced Installer(以下简称AI),应该说如果安装过程没有特殊动作(常规动作指释放文件、写注册表、建快捷方式等)的话,倒挺傻瓜的,按照向导和界面操作就能打好一个包。但我的安装动作包括:
AhDung
2018/09/13
1.8K0
C# 读写Ini文件
ini文件在Win95以前比较盛行,之后由于出册表等技术的出现,ini技术主键退居二线,不过对于一些小项目,读写ini文件还是很适用的。
用户9127601
2021/11/01
1.7K0
宝塔面板php.ini配置文件在哪里?php.ini文件路径
php.ini配置文件是站长经常会用到的,那么宝塔面板的php.ini配置文件在哪里?分享宝塔php.ini文件路径:
Z4
2020/04/21
4K0
文件上传之.user.ini文件漏洞利用
.user.ini。它比.htaccess用的更广,不管是nginx/apache/IIS,只要是以fastcgi运行的php都可以用这个方法。我的nginx服务器全部是fpm/fastcgi,我的IIS php5.3以上的全部用的fastcgi/cgi,我win下的apache上也用的fcgi,可谓很广,不像.htaccess有局限性。
网e渗透安全部
2023/02/25
1.8K0
文件上传之.user.ini文件漏洞利用
Pycharm 运行py文件[通俗易懂]
2. 打开pycharm,如果已经有文件了,就点击File->close project,回到主界面
全栈程序员站长
2022/09/27
4.2K0
Pycharm 运行py文件[通俗易懂]
怎么新建pytest的ini文件_pytest.ini配置
pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行
全栈程序员站长
2022/09/16
1.3K0
.user.ini文件的坑
最后查到问题出在php的配置上,主要是因为配置了open_basedir项目,但是找遍了php.ini和php-fpm.conf也没有找到哪里设置了这个配置项,最后在看一个回答的时候,发现项目根目录可以放一个.user.ini文件来设置允许php访问的目录。
ianzhi
2019/07/31
1.5K0
py文件的运行
1,运行第一段python代码。 在d盘下创建一个t1.py文件内容是: 打开windows命令行输入cmd,确定后 写入代码python d:t1.py 
全栈程序员站长
2022/07/21
2.3K0
py文件的运行
每日一库:ini文件读取
在 Go 语言开发中,读取和解析配置文件是一个常见的任务。INI 格式是一种简单而常见的配置文件格式,它由多个部分组成,每个部分包含键值对,用于配置应用程序的各种属性。本文将介绍如何在 Go 语言中使用 INI 格式的配置文件。
孟斯特
2023/10/19
4180
每日一库:ini文件读取
QSettings读写ini配置文件
Qt中使用QSettings类读取ini后缀的配置文件非常简单,使用该类也可以很简单的操作Windows注册表。以前也使用过MFC中的WritePrivateProfileString()和GetPrivateProfileString()这两个API操作ini配置文件。
ccf19881030
2020/03/02
8210

相似问题

c++:类X没有名为Y的成员

20

C++:类"X“没有名为"Y”的成员

15

python如果文件名为"blah“和"blah”

20

Ember.JS:没有名为blah的路由

11

C++类错误“‘const class Number”没有名为“intValue”的成员

123
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文