#ifndefの使い方
ヘッダの中の#ifndef、これはとても重要なものです.例えば、あなたは2つのCファイルを持っていて、この2つのCファイルはすべて同じヘッダファイルをincludeしました.コンパイル時、この2つのCファイルは一緒に実行可能なファイルにコンパイルされ、問題が発生し、大量の宣言が衝突した.
やはりヘッダーファイルの内容を#ifndefと#endifに入れましょう.あなたのヘッダーファイルが複数のファイルに引用されるかどうかにかかわらず、これを追加します.一般的なフォーマットは次のとおりです.
#ifndef<識別>
#define
......
......
#endif
<識別子>は理論的には自由に命名できるが、各ヘッダファイルのこの「識別子」は一意であるべきである.標識の命名規則は一般的にヘッダファイル名が大文字で、前後に下線を引き、ファイル名の「.」下線にもなります.例えば、stdio.h
#ifndef _stdIO_H_
#define _stdIO_H_
......
#endif
2.ifndefで変数が発生する問題を定義します(一般的にはifndefでは定義されません).
#ifndef AAA
#define AAA
...
int i;
...
#endif
変数定義があります
vcにリンクするとiが定義を繰り返すエラーが発生し、cでコンパイルに成功します.
結論:
(1).最初にこの頭を使ったときcppファイル生成.objの場合、int iは、これを別のものとして使用することを定義する.cppは再び[単独]生成する.objの場合、int iはまた定義され、2つのobjは別のものとなる.cppもincludeというヘッダを接続すると、繰り返し定義が現れる.
(2).ソースファイルの拡張子を変更する.c後,VCはC++ではなくC言語の構文に従ってソースプログラムをコンパイルする.C言語では,複数のint iに遭遇すると,そのうちの1つが定義であり,他は宣言であると自動的に認識される.
(3).C言語とC++言語の接続結果は異なり、コンパイル時にC++言語がグローバルになる可能性がある
変数のデフォルトは強い記号なので、接続エラーが発生しました.C言語は初期化するか否かによって強弱の判断を行う.(参考)
解決方法:
(1).ソースファイルの拡張子を変更する.c.
(2).推奨ソリューション:
.hではextern int iのみを宣言する.はい.cppで定義
#ifndef __X_H__
#define __X_H__
extern int i;
#endif//__X_H__
int i;
注意問題:変数は一般的に定義しない.hファイルにあります.
私のhファイル:
やはりヘッダーファイルの内容を#ifndefと#endifに入れましょう.あなたのヘッダーファイルが複数のファイルに引用されるかどうかにかかわらず、これを追加します.一般的なフォーマットは次のとおりです.
#ifndef<識別>
#define
......
......
#endif
<識別子>は理論的には自由に命名できるが、各ヘッダファイルのこの「識別子」は一意であるべきである.標識の命名規則は一般的にヘッダファイル名が大文字で、前後に下線を引き、ファイル名の「.」下線にもなります.例えば、stdio.h
#ifndef _stdIO_H_
#define _stdIO_H_
......
#endif
2.ifndefで変数が発生する問題を定義します(一般的にはifndefでは定義されません).
#ifndef AAA
#define AAA
...
int i;
...
#endif
変数定義があります
vcにリンクするとiが定義を繰り返すエラーが発生し、cでコンパイルに成功します.
結論:
(1).最初にこの頭を使ったときcppファイル生成.objの場合、int iは、これを別のものとして使用することを定義する.cppは再び[単独]生成する.objの場合、int iはまた定義され、2つのobjは別のものとなる.cppもincludeというヘッダを接続すると、繰り返し定義が現れる.
(2).ソースファイルの拡張子を変更する.c後,VCはC++ではなくC言語の構文に従ってソースプログラムをコンパイルする.C言語では,複数のint iに遭遇すると,そのうちの1つが定義であり,他は宣言であると自動的に認識される.
(3).C言語とC++言語の接続結果は異なり、コンパイル時にC++言語がグローバルになる可能性がある
変数のデフォルトは強い記号なので、接続エラーが発生しました.C言語は初期化するか否かによって強弱の判断を行う.(参考)
解決方法:
(1).ソースファイルの拡張子を変更する.c.
(2).推奨ソリューション:
.hではextern int iのみを宣言する.はい.cppで定義
#ifndef __X_H__
#define __X_H__
extern int i;
#endif//__X_H__
int i;
注意問題:変数は一般的に定義しない.hファイルにあります.
私のhファイル:
// NSObject_Constants.h
// httpDemo
//
// Created by on 12-8-28.
// Copyright (c) 2012 yangxiaolong. All rights reserved.
//
//#import <Foundation/Foundation.h>
// :
#ifndef _CONSTANTS_H_
#define _CONSTANTS_H_
#define tartgetlistUrl @"http://192.168.1.4:6401/?from=android"
#define NUMBER 23
//static NSString * const targetList = @"http://192.168.1.4:6401/?from=android";
//static const int numb = 5;
#endif