首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 函式定義順序、標頭檔引用與命名空間衝突解決

     編輯:關於C++

C++ 編譯器採單向掃描,呼叫端必須先「看過」被呼叫函式的宣告或定義。本文透過範例說明函式前置宣告、標頭檔分離、#include 兩種引用語法差異,以及命名空間解決同名函式衝突的做法。

函式定義順序限制

若 maxvalue() 定義在 main() 之後,直接呼叫會導致編譯錯誤。解決方式有二:

  1. 將定義移至 main() 之前。
  2. 於檔案頂部加入前置宣告:int maxvalue(int, int, int);

標頭檔分離與 #include 差異

將函式定義置於 common.h,再於主程式 #include "common.h"。引用語法規則:

  • #include <iostream>:標準函式庫,編譯器從系統路徑搜尋。
  • #include "common.h":自訂標頭檔,編譯器從專案/工作目錄搜尋。

#include 實質相當於將檔案內容插入引用處。

命名空間解決同名衝突

若主程式與標頭檔皆定義 maxvalue(),直接編譯會報錯「多重定義」。解決方法:為標頭檔函式包裹命名空間:

// common.h
namespace Common {
    int maxvalue(int a, int b, int c) { ... }
}

呼叫時以作用域解析運算子指明:

cout << Common::maxvalue(a, b, c); // 呼叫 common.h 版本
cout << maxvalue(a, b, c);         // 呼叫本地版本

此機制類似 C# 的 namespace,但 C++ 使用 :: 而非 .。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved