1. 程式人生 > >C語言中如何解決重複include的問題

C語言中如何解決重複include的問題

採用#ifndef

格式如下:

#ifndef __SOMEFILE _H_

#define __SOMEFILE _H_

...//一些宣告語句

#endif

        #ifdndef的方式依賴於巨集名不允許衝突。這不光可以保證同一個檔案不會被包含多次,也能保證內容完全相同的兩個檔案不會不小心被同時包含。缺點是如果不同標頭檔案的巨集名不小心相同,那麼可能會導致標頭檔案明明被include了,編譯器卻說找不到宣告的狀況。

相關推薦

C語言如何解決重複include的問題

採用#ifndef 格式如下: #ifndef __SOMEFILE _H_ #define __SOMEFILE _H_ ...//一些宣告語句 #endif         #ifdndef的方式依賴於巨集名不允許衝突。這不光可以保證同一個檔案不會被包含多次,也能保證內

解決C/C++語言全域性變數重複定義的問題

前言 今天,在整理自己的程式碼的時候,考慮到我寫的程式碼從一至終都是在一個cpp檔案裡面。於是,想把自己的程式碼中的各個模組分離開來,以便更好地閱讀和管理。 遇到的問題 我的做法是: 1. 巨集定義、結構體定義、函式宣告以及全域性變數定義

解決C/C++語言全局變量重復定義的問題

分離 sta 9.png 代碼 extern 不同 遇到 情況 而且 前言 今天,在整理自己的代碼的時候,考慮到我寫的代碼從一至終都是在一個cpp文件裏面。於是,想把自己的代碼中的各個模塊分離開來,以便更好地閱讀和管理。 遇到的問題 我的做法是: 宏定義、結構體定義

C語言解決多個C檔案包含同一標頭檔案引起的檔案重複包含問題

解決多個C檔案包含同一標頭檔案引起的檔案重複包含問題,並給出全域性變數如何定義和宣告的方法. 解決方法: 1. 定義公共檔案: global.c 和global.h 其中, global.c檔案中: #include "global.h" //定義全域性變數 int g

C語言多個檔案組織(include)的原理

大學剛學C的時候,老師教的第一個C程式是打印出一個helloword字樣,並告訴我們,要使用printf這個東西,C檔案開頭需要加上一句:#include"stdio.h" 這個語句是實現了什麼動作? 後來學到C++,好像老師還是同學(記不清楚了)說了一句,#in

C語言如何解決:連續輸入一串資料到陣列,用空格隔開並用回車結束

C語言中getchar()函式的運用及注意事項 getchar()函式的運用 getcahr()函式是專門用於輸入字元常量的函式,它沒有引數,函式從鍵盤緩衝區裡面取出一個字元。 int *a; in

C語言重複定義的問題

幾個基本知識: 1、標頭檔案:標頭檔案的作用在於編譯時,會在#include<*.h>位置處展開,所以如果有多個.c檔案include同一個標頭檔案(很常見),如果標頭檔案編寫時不進行處理,出現重複定義是不可避免的。尤其是當一個專案分成多個模組的時候。 2、一般

C語言字符、字符串、字符數組

文件 getc order 知識點 技術 ima 數組 c語言 align char a = ‘h‘; memory h char a[] = "Hello"; memory H e l l o ‘\0‘ stri

c語言一種典型的排列組合算法

scan .com nbsp 方法 can main else const 組合數 c語言中的全排列算法和組合數算法在實際問題中應用非常之廣,但算法有許許多多,而我個人認為方法不必記太多,最好只記熟一種即可,一招鮮亦可吃遍天 全排列: #include<stdio.h

c語言對字段寬度的理解?

style lib include creat span 演示 file code pre 1 /************************************************************************* 2 >

C語言求字符串的長度

類型 char 計算 語言 col pan har 字符 str1 在C語言中求字符串的長度,可以使用sizeof()函數和strlen()函數,後者需要引入string.h (#include <string.h>) 因為C語言字符串是以 \0 結尾表示結束的

sqlite學習筆記7:C語言使用sqlite之打開數據庫

實例 clas details code 返回 pri san filename stdlib.h 數據庫的基本內容前面都已經說得差點兒相同了。接下看看如何在C語言中使用sqlite。 一 接口 sqlite3_open(const char *filename, s

sqlite學習筆記11:C語言使用sqlite之刪除記錄

false done mta ase rom real not null -a ubun 最後一節,這裏記錄下怎樣刪除數據。 前面全部的代碼都繼承在這裏了,在Ubuntu14.04和Mac10.9上親測通過。 #include <stdio.h> #in

c語言命令行參數argc,argv[]詳解

[ ] 整數 argv 輸入 點擊 char main [1] 程序 main(int argc,char *argv[ ]) 1.argc為整數 2.argv為指針的指針(可理解為:char **argv or: char *argv[] or: char argv[][

sqlite學習筆記9:C語言使用sqlite之插入數據

name article void num mes cut cpp content int 前面創建了一張表,如今給他插入一些數據。插入數據跟創建表差點兒相同,不過SQL語言不一樣而已,完整代碼例如以下: #include <stdio.h> #inclu

C語言打印返回值

返回值 struct demo bsp %d return username har strdup demo: ----return :返回值------------------ int mosquitto_username

C語言的一個*和[]優先級問題

pre 執行 return ges spa 技術 分享 malloc bsp 最近寫著玩了這麽一段代碼 1 int Init(int **T, int v1, int v2, int v3) 2 { 3 4 if (!(*T=(int*) malloc(3*

C語言浮點數在內存的存儲方式

大端 部分 由於 包含 指數 類型 計算機 data- trac 關於多字節數據類型在內存中的存儲問題 //////////////////////////////////////////////////////////////// int ,short 各

理解C#語言的類型轉換----初學者的理解,請大神指教

寫代碼 需要 con c# 初學 har 3.1 parse 範圍 一下都是在視頻教學中學到後的理解,如果說錯了請大神指教 C#語言中的類型轉換,就是將某個數據要轉換成另一個類型的數據。 c#語言中的數據類型主要有: char類型(字符類型); string類型(字符串類型

C語言的編譯時分配內存

一個 地址 移植 eap 也會 功能 空間大小 全局區 限定 1.棧區(stack) --編譯器自動分配釋放,主要存放函數的參數值,局部變量值等; 2.堆區(heap) --由程序員分配釋放; 3.全局區或靜態區 --存放全局變量和靜態變量;程序結束時由系統釋放,分為全局初