主要問題是:C編譯器如何處理不同源代碼中main函數的多個定義? 像:C編譯器如何處理不同的主函數定義?
無效的主要(無效)
INT主要(無效)
INT主(INT ARGC,CHAR *的argv []) ...
我不知道如果這與名稱修飾有關,那只有當C代碼與C++代碼鏈接而不使用extern「C」時纔會發生,但我只是通過Linux程序員手冊(shell上的普通人命令)查詢功能打開(man 2打開)並顯示兩個簽名:
OPEN(2)的Linux程序員手冊
NAME
open, creat - open and possibly create a file or device
提要
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
int creat(const char *pathname, mode_t mode);
這可怎麼工作的?它的處理就像主函數的定義一樣?
我想知道你的意思是不同類型的多重聲明或多重定義。如果你給出了你的行爲不清楚的示例代碼(你自己的程序),這將有所幫助。目前還不清楚這個問題與[linux]和[C++]有什麼關係。 – PJTraill
名稱修飾不會發生在C名稱上,而是C++名稱超載,以適應鏈接器的限制。因此,它與C編譯器(也可能是鏈接器)在你的程序中的作用沒有任何關係。 – PJTraill
這不是有效的C代碼。 C和C++是**不同的**語言!即使相同的語法/語法也可以具有不同的語義。 – Olaf