經歷的RPC教程在MSDN, 我剛剛創建了一個項目有兩個.c
文件如下::「在目標文件中定義」和「一個或多個多重定義符號找到」
/* file hellop.c */
#include <stdio.h>
#include <windows.h>
void HelloProc(char * pszString)
{
printf("%s\n", pszString);
return ;
}
和
/* file: hello.c */
#include "hellop.c"
void main(void)
{
char * pszString = "Hello, World";
HelloProc(pszString);
return ;
}
爲什麼和編譯器在哪裏看到HelloProc(char*)
的多個符號定義或聲明?
編輯::正如在這SO_Question,包括.h
文件中得出的結論顯然是最好的解決方案。但是,這是否讓我們沒有實現設計,我們可以將.c
文件包含到另一個.c
文件中?
奇怪的行爲::首次編譯運行正常,但重建解決方案與上述錯誤。您可以通過將文件名從.c
更改爲.cpp
來檢查多次首次編譯,反之亦然。爲什麼會出現這種行爲? (我不知道其他人也遇到過與給定的例子)
欣賞你的答案,但我不認爲這是這裏的問題。另外,我沒有任何「main.c」文件,它是「hello.c」:-)。然而,我知道,將這個聲明放在一個頭文件中會很棒,但我想知道背後的原因。 「#include」就像剪切粘貼的東西(粗略地說),那麼這個錯誤不應該發生。 – Abhineet
@Abhineet看到我的編輯 – Dabo
是的,對不起,我打算說「複製粘貼」的課程。 – Abhineet