Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 关于C+;中的头文件创建错误+;_C++_Windows_Visual Studio 2010 - Fatal编程技术网

C++ 关于C+;中的头文件创建错误+;

C++ 关于C+;中的头文件创建错误+;,c++,windows,visual-studio-2010,C++,Windows,Visual Studio 2010,我正在为.cpp文件创建头文件,其中只包含函数的声明或原型 下面是我写的三个程序 1.header.h文件//其中我声明了函数add(,)和sub(,) 2.header.cpp,其中我定义了函数add(,)和sub(,) #包括 #包括“header.h” 使用名称空间std; 整数相加(整数a,整数b){ s=10; INTC=a+b+s; 返回c; } 内部子(内部a、内部b){ int c=a-b; 返回c; } 3.example.cpp #include<i

我正在为.cpp文件创建头文件,其中只包含函数的声明或原型

下面是我写的三个程序 1.header.h文件//其中我声明了函数add(,)和sub(,)

2.header.cpp,其中我定义了函数add(,)和sub(,)

#包括
#包括“header.h”
使用名称空间std;
整数相加(整数a,整数b){
s=10;
INTC=a+b+s;
返回c;
}
内部子(内部a、内部b){
int c=a-b;
返回c;
}    
3.example.cpp

     #include<iostream>
     #include"header.h"
     using namespace std;
      void main(){

    int a=10,b=20;

    int c=add(a,b);
    int d=sub(c,a);

    cout<<"c"<<c;
    cout<<"d"<<d;

    //cout<<s;
    getchar();
      }
#包括
#包括“header.h”
使用名称空间std;
void main(){
INTA=10,b=20;
int c=添加(a,b);
int d=sub(c,a);

因为.h中的这一行已经是一个定义,所以不能得到错误:

int s;
您需要在标题中包含以下内容:

extern int s;
然后在一个.cpp文件中,通常是一个与.h文件具有相同基本文件名的文件,您需要具有以下定义:

int s;


相关:你不需要函数声明中的
extern
关键字,因为它们只是声明,告诉编译器这样一个函数存在于某个地方,你可以任意多次这样做。但是如果你把一个全局(非
静态
,非
内联
)函数定义(带有
{}
函数体而不是
)对于一个.h文件,您确实会在多个定义上遇到类似的链接器错误。

如果您使用include-guard#define,我认为在它们内部放置一次
#pragma是没有意义的。
但我在互联网上读到使用#pragma将保持代码执行的优化,我补充说,你的意思是说我只能写,#ifndef#pragma..endif,r是吗?不,
#ifndef
#define
就像你拥有它们一样一起运行。
#pragma once
是一个非标准化的替代方案,可能会减少某些编译器的编译时间。它不会以任何方式影响代码执行。你可能应该把它放在外部,或者根本不使用它。@Santhosh CoolO、 一旦你得到满意的答案,你就把你最喜欢的答案标记为已接受(答案左上角的勾号)。这将把问题标记为“已解决”。
extern int s;
int s;