Главный вопрос: как компилятор C обрабатывает несколько определений для функции main в разных исходных кодах? как:Как компилятор C обрабатывает различные определения основных функций?
недействительным основной (аннулируются)
INT основной (аннулируются)
INT основной (интермедиат ARGC, символ * ARGV []) ...
Я не знаю, если это имеет какое-то отношение к манипулированию именами, это происходит только тогда, когда код C связан с кодом C++ без использования extern «C», но также я просто запрашивал с помощью руководства программиста Linux (только простая команда man на оболочке) для функция открыта (man 2 open), и для нее показаны две подписи:
ОТКРЫТО (2) Руководство программиста Linux
ИМЯ
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);
, как это может работать? Он обрабатывается, как определения основной функции?
Интересно, имеете ли вы в виду несколько деклараций main с разными типами или несколькими определениями. Это поможет, если вы приведете примерный код (ваша собственная программа), поведение которой вам непонятно. Также непонятно, что этот вопрос имеет отношение к [linux] и [C++]. – PJTraill
Название mangling не происходит с именами C, но перегружает имена C++, чтобы учесть ограничения линкеров. Таким образом, это не влияет на то, что делает компилятор C (и, возможно, компоновщик) с вашей программой. – PJTraill
Это не действительный код С. C и C++ являются ** разными ** языками! Даже идентичный синтаксис/грамматика может иметь разную семантику. – Olaf