#ifndef still cannot garantee .h only be compiled once?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#ifndef still cannot garantee .h only be compiled once?相关的知识,希望对你有一定的参考价值。

-------------example---------------

-------------ah.h-----------------

#ifndef _AH_H

#define _AH_H

 int a=5;

#endif

 

-------------calla.cpp-------------

#include"ah.h"

 

 void seta()

{

   a=2;

}

 

------------main-------

#include"ah.h"

#include<iostream>

 

void seta();

using namespace std;

void main()

{   

   cout<<"a="<<a<<endl;  

   seta();  

   cout<<"after seta, a="<<a<<endl;

}

 

==================================================

1>------ 已启动生成: 项目: taextern, 配置: Debug Win32 ------
1>生成启动时间为 2016/6/3 星期五 下午 13:40:55。
1>InitializeBuildStatus:
1>  正在创建“Debug\taextern.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
1>ClCompile:
1>  所有输出均为最新。
1>ManifestResourceCompile:
1>  所有输出均为最新。
1>calla1.obj : error LNK2005: "int a" ([email protected]@3HA) 已经在 tmain.obj 中定义
1>d:\userdata\administrator\documents\visual studio 2010\Projects\taextern\Debug\taextern.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
1>
1>生成失败。
1>
1>已用时间 00:00:00.13
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

 

 

 

----------------------Example 2---------------

---------set global variable---------

---------set extern -------------

 

==================================================

--------------ah.h--------------

#ifndef _AH_H

#define _AH_H

 int a=5;

#endif

 

--------------calla.cpp-----------

 

//#include"ah.h"

extern int a;

 void seta()

{  

a=2;

}

 

-------------main----------------

#include"ah.h"

#include<iostream>

void seta();

using namespace std;

void main()

{  

cout<<"a="<<a<<endl;  

seta();  

cout<<"after seta, a="<<a<<endl;

}

 

-----------------------------------------------------------

OK.

 

以上是关于#ifndef still cannot garantee .h only be compiled once?的主要内容,如果未能解决你的问题,请参考以下文章

PycharmConfiguration is still incorrect.

如何在 INTENT_ACTION_STILL_IMAGE_CAMERA 中为新照片指定目录

IDEA compile successfully many errors still occur

WebView.destroy() called while still attached 的解决的方法

valgrind检查still reachable情况

VOA常速听力Fusion Reactor Still in Works