Czytam w tym czasie „Effective C ++” napisany przez Meyersa i spotkałem się z terminem „jednostka tłumacząca”.
Czy ktoś mógłby mi wyjaśnić:
1) Co to dokładnie jest
2) Kiedy powinienem rozważyć użycie go podczas programowania w C ++
3) Jeśli jest związany tylko z C ++ lub może być używany z innymi językami programowania
Mogę już z niego korzystać, nie znając terminu ....
Odpowiedzi:
Od tutaj : ( Wayback Link maszyna )
źródło
Jednostką tłumaczeniową jest plik (.c / .cpp), który po zakończeniu pracy zawiera wszystkie pliki nagłówkowe.
http://msdn.microsoft.com/en-us/library/bxss3ska%28VS.80%29.aspx
źródło
Trudne pytanie, na które należy ostatecznie odpowiedzieć. Standard C ++ stanowi:
Więc dla większości intencji i celów jednostka tłumacząca jest pojedynczym plikiem źródłowym C ++ i nagłówkiem lub innymi plikami, które zawiera za pośrednictwem mechanizmu #include preprocesora.
Jeśli chodzi o inne pytania:
Nie można tego nie brać pod uwagę - jednostki tłumaczeniowe są podstawą programu w C ++.
Inne języki mają podobne pojęcia, ale ich semantyka będzie nieco inna. Większość innych języków nie używa na przykład preprocesora.
źródło
Książka wyjaśnia to dość wyraźnie. Kiedy Meyers odnosi się do „jednostki tłumaczącej”, ma na myśli plik kodu źródłowego.
źródło
Oprócz ODR, jednostka tłumacząca jest ważna w definicji nienazwanych przestrzeni nazw, która zastępuje jedno ze starych zastosowań słowa „statyczny”.
Chyba nadal nie mam wystarczającej liczby punktów, aby dodać komentarz pod pierwszą odpowiedzią.
źródło
Jednostką tłumaczeniową jest kod przekazywany do właściwego kompilatora. Zazwyczaj oznacza to wynik działania preprocesora w pliku .c.
źródło
Programy C i C ++ składają się z jednego lub większej liczby plików źródłowych, z których każdy zawiera część tekstu programu. Plik źródłowy wraz z plikami włączającymi (pliki dołączane przy użyciu dyrektywy preprocesora #include), ale bez uwzględnienia sekcji kodu usuniętych przez dyrektywy kompilacji warunkowej, takiej jak #if, nazywa się „jednostką tłumaczącą”.
źródło
Według MSDN : C i C ++ programy składają się z jednego lub więcej plików źródłowych, z których każdy zawiera część tekstu programu. Plik źródłowy wraz z plikami włączającymi (pliki dołączane przy użyciu dyrektywy preprocesora #include), ale bez uwzględnienia sekcji kodu usuniętych przez dyrektywy kompilacji warunkowej, takiej jak #if, nazywa się „jednostką tłumaczącą”.
źródło
Każdy plik cpp / c (implementacja) zostanie przekonwertowany na jednostkę tłumaczeniową (tj. Plik obiektowy (.obj)) nagłówki w pliku cpp zostaną zastąpione rzeczywistym tekstem z plików nagłówkowych.
źródło
Jak powiedzieli inni, jednostka tłumacząca jest w zasadzie zawartością pliku źródłowego po wstępnym przetwarzaniu. Jest to najwyższa produkcja w gramatyce językowej; trzeba by się o to martwić, gdybyś pisał kompilator C lub C ++.
źródło
Moim zdaniem „jednostka tłumacząca” to zazwyczaj pojedynczy plik źródłowy „po przetwarzaniu wstępnym”. Możesz uzyskać więcej informacji na tej stronie MSDN. http://msdn.microsoft.com/en-us/library/bxss3ska(v=vs.80).aspx
źródło