A. C++中多文件編譯問題
<no.2> 很多C++程序員還在使用而不是用更新的標準的庫。
這兩者都有什麼不同呢?首先,5年前我們就開始反對把.h符號繼續用在標準的頭
文件中。繼續使用過時的規則可不是個好的方法。從功能性的角度來講,
<iostream>包含了一系列模板化的I/O類,相反地<iostream.h>只僅僅是支持字元
流。另外,輸入輸出流的C++標准規范介面在一些微妙的細節上都已改進,因此,
<iostream>和<iostream.h>在介面和執行上都是不同的。最後,<iostream>的各組
成都是以STL的形式聲明的,然而<iostream.h>的各組成都是聲明成全局型的。
因為這些實質上的不同,你不能在一個程序中混淆使用這兩個庫。做為一種習
慣,在新的代碼中一般使用<iostream>,但如果你處理的是過去編寫的代碼,為了
繼承可以用繼續用<iostream.h>舊保持代碼的一致性。
<no.4>只要秉承著先聲明後定義再使用的規則,你可以變著花樣的引入,不過模板類
除外,模板類中出現的所有函數成員要在一個文件中定義。詳見C++PRIMER = =
B. 關於C++多文件編譯
Suan AA("name", 1.0, 2.0);這里構造函數用小括弧
C. 關於C語言多文件編譯的問題
使用頭文件
例如: 原來是一個文件 hello.c /hello.h
有函數
void test1();
void test2();
void test3();
void test4();
把函數說明和對應的函數體,放到多個文件.c和.h文件的函數是對應的.
hello.c/hello.h
void test1();
void test2();
---
part1.c/par1.h
void test3();
void test4();
D. C程序如何多文件編譯,運行
新建工程,把這三個文件都添加到工程的 Source File
print()函數,由於是另一個文件定義的,要前面加個extern聲明這是一個外部函數。
,點編譯就行了,有的版本新建工程會生程stdafx.h,還要在開頭加上#include "stdafx.h"
當然你還可以用 nmake來完成這個任務,不過這是吃力不討好的事.
E. 多文件的編譯,簡單的
display 不是 dispaly
至於cannot open file "Debug/project1.exe"
我不知道你用的是不是visual studio,如果是的話貌似程序運行後如果不關掉修改後再運行就會出現這種情況。
F. c++多文件編譯問題
什麼錯誤? 我沒有詳細看你的代碼.
就只說一下 多文件編譯:
如果有多個文件, 每個文件中寫好了依賴關系,那麼編譯時:
1.
g++main.cpp3.cpp//默認會生成a.out(linux),在dos下默認會生成*.exe
或者 2. 先編譯每個 不含main函數的文件成 .o
g++-c3.cpp//默認會生成3.o,也可以用-o指定某個名字
//如果不只一個3.cpp,每個都要先編譯成*.o
//頭文件不用管,在文件中#include正確就行.
g++main.cpp3.o//默認會生成a.out(linux),在dos下默認會生成*.exe
G. vs中編譯生成的.dll文件有什麼用處
要安裝編譯器。 否則沒有辦法。 VS2010 是一個平台裡面附帶了很多編譯器,例如VC10的編譯器。 如果你要生成dll,就需要編譯器。 可以單獨下載。 也可以用 GCC 的編譯器。
H. c多個文件如何編譯
關於整個 C 語言中的主函數 main( ) 如何調用相關的頭文件(*.h)、以及調用其它獨立的模塊(*.c)的方法,關鍵在於對於如何編寫 makefile 文件的真正理解、以及真正掌握編寫規則。
由於我已經有很多年沒有編寫過 C 語言源程序、以及編寫 makefile 文件了,但是可以大概給你提供一個思路就是:
下面的文本文件假設以 my_makefile 為例,編譯環境為 Linux 系統,C 語言編譯器為 gcc。
但是在這里注意一點:我的 my_makefile 文件中的注釋語句是否是分號進行注釋,我已經不太記得了,這個需要自己再參考一下。
另外就是:對源文件(*.c)、以及生成可執行文件(my_runfile)在 my_makefile 文件中的前後次序,我也記不清了,僅供參考。
myprog1.o: myprog1.c ; myprog1.o 的生成依賴於 myprog1.c 這個源程序
gcc -c myprog1.c ; 使用 Linux 系統的 C 語言編譯器對 myprog1.c 只編譯、不鏈接
myprog2.o: myprog2.c ; myprog2.o 的生成依賴於 myprog2.c 這個源程序
gcc -c myprog2.c ;使用 Linux 系統的 C 語言編譯器對 myprog2.c 只編譯、不鏈接
my_runfile: myprog1.o myprog2.o ; 可執行文件 my_runfile 的生成依賴於 myprog1.o、myprog2.o 這兩個目標文件
gcc -o my_runfile myprog1.o myprog2.o ; 使用 cc 的 -o 選項生成用戶自定義的可執行文件:my_runfile,如果不指定 -o 選項,cc 編譯器生成的預設可執行文件名為:a.out
運行命令為:
$make -f my_makefile (使用 -f 選項代替預設的 make 文件名 makefile)
I. 多個文件的條件編譯,需要注意些什麼
不能在同一個文件中包含頭文件兩次。一般不會犯這種錯誤,但是當使用包含了一個頭文件的文件時有可能在不知情的情況下犯這個錯誤。
使用預處理器指令#ifndef來解決上面的問題。語名#ifndef hyong…..#endi表示僅當以前沒有使用預處理器編譯指令#define定義的名稱hyong時才處理#ifndef….#endif之間的語句。#define通常創建符號常量,比如#define H 3;把常量3定義為名字H,但只使用#define就能創建名稱,比如#define H;就創建了一個名稱H。完整的#ifndef….#endif語句的例子如下:#ifndef HY #define HY void g(); #endif;該語句的執行順序為:編譯器首先遇到該頭文件時,名稱HY沒有被定義,這時編譯器就將查看#ifndef….#endif之間的內容,並讀取到#define HY這一行。如果在同一文件中遇到包含該頭文件的代碼時,編譯器就知道HY這個名字已經被#define定義了,從而跳過#ifndef….#endif之間的內容。注意這種方法並不能防止頭文件被包含兩次,而只是讓他忽略除第一次包含之外的所有內容。
上面的內容節選自本人文庫里的文章《C++名稱空間與作用域專題》,希望對你有幫助,如果你對預處理器不了解,可以再去下載本人的另一篇文章《C++宏,預處理器,RTTI,typeid與強制類型轉換專題》
J. 關於C++多文件編譯的問題
是的只需要包含頭文件。如果要看具體問題,需要貼圖