[問題] 請問一個.cpp檔與.h中define的作用
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC
問題(Question):
在業界的code裡面看到的普遍寫法
在xxx.cpp裡:
#define _XXX_CPP_
void FUNCTION(void)
{
......
}
#under _XXX_CPP_
在對應的xxx.h裡:
#ifndef _XXX_H_
#define _XXX_H_
#ifdef _XXX_CPP_
#define INTERFACE
#else
#define INTERFACE extern
#endif
INTERFACE void FUNCTION(void);
#endif
請問綠色的部份,為什麼要特地這樣寫呢?
如果其它檔案,例如ooo.cpp想要使用FUNCTION()
就不能#include "xxx.h",compiler會有問題
(compiler會說INTERFACE被定義過了,因為ooo.cpp會走#else,而xxx.cpp會走#ifdef)
因此而必須改用extern FUNCTION
但如果要extern FUNCTION,應該不需要去特地#define INTERFACE吧?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.197.207
※ 編輯: Zoxge 來自: 123.195.197.207 (08/12 00:33)
推
08/12 00:37, , 1F
08/12 00:37, 1F
→
08/12 00:45, , 2F
08/12 00:45, 2F
推
08/12 00:51, , 3F
08/12 00:51, 3F
→
08/12 00:51, , 4F
08/12 00:51, 4F
推
08/12 01:44, , 5F
08/12 01:44, 5F
→
08/12 01:44, , 6F
08/12 01:44, 6F
→
08/12 22:07, , 7F
08/12 22:07, 7F
→
08/12 22:09, , 8F
08/12 22:09, 8F
→
08/12 22:10, , 9F
08/12 22:10, 9F
→
08/12 22:10, , 10F
08/12 22:10, 10F
→
08/12 22:12, , 11F
08/12 22:12, 11F
→
08/12 22:13, , 12F
08/12 22:13, 12F
→
08/12 22:14, , 13F
08/12 22:14, 13F
→
08/12 22:15, , 14F
08/12 22:15, 14F
→
08/12 23:09, , 15F
08/12 23:09, 15F
→
08/12 23:25, , 16F
08/12 23:25, 16F
→
08/12 23:38, , 17F
08/12 23:38, 17F
推
08/13 00:47, , 18F
08/13 00:47, 18F
→
08/13 00:47, , 19F
08/13 00:47, 19F
→
08/13 00:48, , 20F
08/13 00:48, 20F