Начало - Антивируси
Какво трябва да има в c-файла и какво трябва да има в h-файла? Онлайн Включване на един C изходен файл в друг? Разделяне на програмния текст на модули.


Използван правилно, това може да бъде полезен метод.

Да приемем, че имате сложна критична подсистема със сравнително малък публичен интерфейс и много неимплементиран код за внедряване. Кодът включва до няколко хиляди реда, стотици частни функции и доста частни данни. Ако работите с нетривиални вградени системи, вероятно се натъквате на тази ситуация доста често.

Вашето решение вероятно ще бъде наслоено, модулно и отделено и тези аспекти могат да бъдат удобно представени и подобрени чрез кодиране на различни части от подсистемата в различни файлове.

С C можете да загубите много, като направите това. Почти всички инструменти осигуряват прилични оптимизации за единична компилационна единица, но са много песимистични за всичко, декларирано като extern.

Ако поставите всичко в един модул C източник, ще получите -

    Подобрения в производителността и размера на кода - В много случаи извикванията на функции ще бъдат вградени. Дори без инкрустация, компилаторът има способността да произвежда по-ефективен код.

    Нивото на канала и функционалните данни са скрити.

    Избягване на замърсяването на пространството от имена и последиците от това - можете да използвате по-малко тромави имена.

    По-бързо компилиране и комуникация.

Но също така в крайна сметка се оказвате в ужасна бъркотия, когато става въпрос за редактиране на този файл, и губите подразбиращата се модулност. Това може да бъде преодоляно чрез разделяне на изходния код на множество файлове и включването им в една компилационна единица.

Трябва обаче да наложите някои конвенции, за да се справите с това. До известна степен това ще зависи от вашата верига от инструменти, но някои общи указания са

    Поставете публичния интерфейс в отделен заглавен файл - все още трябва да правите това.

    Имате един основен .c файл, който включва всички дъщерни .c файлове. Това може да включва и код за отворения интерфейс.

    Използвайте предпазители на компилатора, за да предотвратите включването на частни заглавки и изходни модули от външни модули за компилация.

    Всички лични данни и функции трябва да бъдат декларирани като статични.

    Поддържайте концептуална разлика между .c и .h файлове. Това използва съществуващи конвенции. Разликата е, че ще имате много статични реклами в заглавките си.

    Ако вашата верига от инструменти не налага нищо, не трябва да указвате частни файлове за внедряване като .c и .h. Ако използвате активирани предпазители, те няма да генерират код и няма да въвеждат нови имена (в резултат на това може да се окажете с някои празни сегменти). Огромното предимство е, че други инструменти (като IDE) ще обработват тези файлове по съответния начин.

Разширението на файла няма значение за повечето C компилатори, така че това ще работи.

Въпреки това, в зависимост от настройките на вашия файл или проект, включеният c файл може да генерира отделен обектен файл. Когато е свързано, това може да доведе до двойно дефинирани знаци.

Езикът C не забранява този тип #include, но получената единица за превод все още трябва да е валиден C.

Не знам каква програма използвате с .prj файла. Ако използвате нещо като "make" или Visual Studio или каквото и да е, просто се уверете, че сте го задали на списък с файлове, които трябва да бъдат компилирани, без такъв, който не може да бъде компилиран независимо.

Можете правилно да включите .C или .CPP файлове в други изходни файлове. В зависимост от вашата IDE обикновено можете да предотвратите двойно свързване, като прегледате свойствата на изходните файлове, които искате да включите, обикновено като щракнете с десния бутон върху тях и щракнете върху свойства и махнете отметката от /проверете компилацията/връзка/изключете от компилация или всяка друга опция . Може би. Или не можете да включите файла в самия проект, така че IDE дори не знае, че съществува и няма да се опита да го компилира. И с makefiles просто не сте поставили файла в него за компилиране и свързване.

РЕДАКТИРАНЕ: Съжалявам, дадох отговор, вместо да отговоря на други отговори :(

Включването на C файл в друг файл е законно, но не е препоръчително, освен ако не знаете точно защо го правите и какво се опитвате да постигнете.
Почти съм сигурен, че ако публикувате тук причината, поради която въпросът ви ще бъде съобщен на общността, ще намерите друг подходящ начин да постигнете целта си (обърнете внимание на „почти“, тъй като е възможно това да е решение, предвид контекста ).

Между другото, пропуснах втората част от въпроса. Ако C файл е включен в друг файл и в същото време е включен в проект, вероятно ще се натъкнете на проблема с дублирани символи, защо свързването на обекти, т.е. една и съща функция ще бъде дефинирана два пъти (освен ако не са статични).

В зависимост от вашата среда за изграждане (няма да уточнявате) може да откриете, че тя работи точно както искате.

Въпреки това, има много среди (както IDE, така и много ръчно изработени Makefiles), които очакват *.c да бъде компилиран - ако това се случи, вероятно ще срещнете грешки при свързване поради дублиращи се символи.

По принцип тази практика трябва да се избягва.

Ако абсолютно # трябва да включите източника (и това обикновено трябва да се избягва), използвайте различен файл за файла.

Това добре ли е? да, ще се компилира

това препоръчително ли е? не - .c файловете се компилират в .obj файлове, които се свързват след компилиране (от линкера) в изпълним файл (или библиотека), така че няма нужда да включвате един .c файл в друг. Вместо това най-вероятно ще искате да направите .h файл, който изброява функциите/променливите, налични в друг .c файл, и да включите .h файла

Можете да използвате gcc компилатора на linux, за да свържете два файла с един изход. Да кажем, че имате два c файла, единият е "main.c", а другият е "support.c". Така че командата за свързване на тези две е

Gcc main.c support.c -o main.out

Тези два файла ще бъдат свързани с един main.out. За да стартирате изхода, командата ще бъде

./главен.изход

Ако използвате функция main.c, която е декларирана във файла support.c, тогава трябва да я декларирате в main, като използвате и extern клас за съхранение.

Изходни файлове

Текстът на C програма може да бъде разделен на няколко изходни файла. Изходният файл е текстов файл, който съдържа или цялата програма, или част от нея. Когато се компилира изходна програма, всеки от нейните съставни изходни файлове трябва да се компилира отделно и след това да се свърже с другите файлове от линкера. Индивидуалните изходни файлове могат да бъдат комбинирани в един изходен файл, компилиран като единична единица, като се използва директива за препроцесор #включи.

Изходният файл може да съдържа произволна комбинация от директиви, инструкции на компилатора, декларации и дефиниции. Цялостността означава, че обекти като дефиниции на функции, структури от данни или набор от свързани директиви за условно компилиране трябва да се намират изцяло в един файл, т.е. те не могат да започват в един файл и да продължават в друг.

Не е необходимо изходният файл да съдържа изпълними изрази. Понякога е удобно да поставите дефиниции на променливи в един файл, а в други файлове да използвате тези променливи, като ги декларирате. В този случай дефинициите на променливи стават лесни за търсене и промяна. По същите причини наименуваните константи и дефинициите на макроси обикновено се събират в отделни файлове и се включват чрез директива за препроцесор #включив изходните файлове, които ги изискват.

Инструкциите към компилатора обикновено се отнасят само за конкретни раздели на изходния файл. Конкретните действия на компилатора, определени от инструкциите, се определят от конкретната реализация на C компилатора.

В следващия пример изходната програма се състои от два изходни файла. Функции основенИ макспредставени в отделни файлове. функция основенизползва функцията максв процеса на изпълнението му.

/* изходен файл 1 - основна функция */

extern int max(int, int); /* декларация на функция */

main() /* дефиниция на функция */

int w = ЕДНО, x = ДВЕ, y = ТРИ;

/* изходен файл 2 - максимална функция */

int max (a, b) /* дефиниция на функция */

В първия изходен файл функцията максдеклариран, но недефиниран. Тази декларация на функция се нарича предварителна декларация; позволява на компилатора да контролира извикванията на функция, преди тя да бъде дефинирана. Определение на функцията основенсъдържа извиквания на функции макс.

Редовете, започващи със символа #, са директиви на предпроцесора. Директивите показват на препроцесора необходимостта от замяна на идентификаторите ONE, TWO, THREE със съответните стойности в първия изходен файл. Обхватът на директивите не се простира до втория изходен файл.

Програмиране Козлова Ирина Сергеевна

27. C++ изходни файлове

27. C++ изходни файлове

Програмата на C++ най-често включва голям брой изходни файлове, всеки от които съдържа описания на типове, функции, променливи и константи. За да може едно име да се използва в различни изходни файлове, за да се отнася до конкретен обект, то трябва да бъде декларирано като външно. Например:

extern double sqrt(double); extern instream cin;

Най-лесният начин да осигурите последователност между изходните файлове е да поставите едни и същи описания в отделни файлове, наречени заглавни файлове, и след това да включите, тоест да копирате, тези заглавни файлове във всички файлове, където тези описания са необходими. Например, ако описанието на sqrt се намира в заглавния файл за стандартните математически функции math.h и трябва да извлечете корен квадратен от 4, ще използвате програмата:

Тъй като обикновените заглавни файлове се състоят от голям брой изходни файлове, те нямат описания, които не трябва да се повтарят.

В командата за включване включете името на файла, което се появява в ъглови скоби, например препраща към файл с това име в стандартната директория (обикновено /usr/include/CC); файловете, съхранявани на други места, се споменават с помощта на имена, затворени в двойни кавички. Например:

#include "math1.h" #include "/usr/bs/math2.h"

ще включва math1.h от текущата потребителска директория и math2.h от директорията /usr/bs.

Нека да покажем как можем да дефинираме типа изходен поток ostream. За да опростим проблема, нека приемем, че типът буфериране е streambuf. Типът streambuf е дефиниран на същото място като истинската дефиниция на ostream. Стойността на дефиниран от потребителя тип определя данните, необходими за представяне на обект от този тип и голям брой операции за работа с тези обекти. Дефиницията се състои от две части: затворена (частна) част, която съдържа информация, използвана само от нейния разработчик, и отворена (публична) част, която е интерфейсът на типа към потребителя.

От книгата Програми и файлове на Windows автор Климов А

DBX файлове Файловете с разширение DBX съхраняват записи на Outlook Express. Тези файлове, наречени банка за съобщения, съдържат писма, съобщения от дискусионни групи и т.н. Ако желаете, можете да копирате тези файлове на носител за съхранение, за да прехвърлите данни на друг компютър.

От книгата Програмиране автор Козлова Ирина Сергеевна

INF файлове В тази статия ще разгледаме какво е INF файл, как да го използвате за работа с други файлове и регистъра, създаване на преки пътища, стартиране на програми и т.н. Както знаете, повече или по-малко сериозен софтуерен продукт обикновено изисква специален

От книгата Win2K FAQ (v. 6.0) автор Шашков Алексей

12. Коментари. Изходни файлове Коментарът е набор от знаци, който се игнорира от компилатора. Но на този набор от знаци са наложени определени ограничения. В рамките на набора от знаци, представляващи коментар, не може да има специални знаци, които

От книгата Microsoft Visual C++ и MFC. Програмиране за Windows 95 и Windows NT автор Фролов Александър Вячеславович

27. Изходни файлове на C++ Програмата на C++ най-често включва голям брой изходни файлове, всеки от които съдържа описания на типове, функции, променливи и константи. За да се гарантира, че дадено име може да се използва в различни изходни файлове за препратка към конкретен обект, то

От книгата UNIX: Процесна комуникация автор Стивънс Уилям Ричард

Файлове По масово искане отваряме раздел с полезни файлове за W2k. Разделът се състои от две части, първата е официални пачове от Microsoft (не всички, но само тези, които ни се струват най-важни), а втората част, която ще включва всички файлове, споменати в ЧЗВ, само помощни програми,

От книгата Език за програмиране C за персонален компютър автор Бочков С. О.

От книгата KOMPAS-3D за студенти и ученици. Рисуване, информатика, геометрия автор Болшаков Владимир

От книгата Недокументирани и малко известни функции на Windows XP автор Клименко Роман Александрович

Изходни файлове Текстът на C програма може да бъде разделен на няколко изходни файла. Изходният файл е текстов файл, който съдържа или цялата програма, или част от нея. Когато се компилира изходна програма, всеки от нейните съставни изходни файлове

От книгата Програмиране за Linux. Професионален подход от Мичъл Марк

Приложение 2 Изходни данни за солидно моделиране

От книгата UNIX: Разработка на мрежови приложения автор Стивънс Уилям Ричард

Приложение 3 Изходни данни за моделиране на семейства

От книгата Wiki-Government [Как технологиите могат да направят правителството по-добро, демокрацията по-силна и гражданите по-влиятелни] от Novek Beth

CPL файлове От предишните няколко параграфа научихте почти всички теоретични изчисления, които са необходими за работа с програмата rundll32.exe. Сега ще изброим възможностите, които тази програма може да предостави на потребителя. Да започнем с описанието

От книгата UNIX - универсална среда за програмиране от Пайк Роб

1.5.4. Изходният код на Linux е система с отворен код, нали? Крайният съдия за това как работи една система е изходният код на самата система. За наш късмет е достъпен безплатно. Съществуваща Linux дистрибуция може да включва изходния код за цялата система и всичко

От книгата на автора

А.3.5. Изходните текстове на програмата калкулатор Листинг A.3 показва текста на програмата, която изчислява стойностите на постфиксните изрази. Листинг A.3. (calculator.c) Основната част от програмата калкулатор/* Изчисления в унарен формат. *//* На входа на програмата се подават едноредови кодове

От книгата на автора

Приложение D Различни изходни кодове D.1. Заглавният файл unp.h Почти всяка програма в тази книга започва с включването на заглавния файл unp.h, показан в списък D.1. Този файл включва всички стандартни системни заглавни файлове, необходими за работа

От книгата на автора

От книгата на автора

Приложение 3 Изходен код за hoc калкулатора Тези файлове съдържат целия код от "Средата за програмиране на Unix", от Brian Kernighan и Rob Pike (Prentice Hall, 1984, ISBN 0-13-937681-X). Отделна hoc6 дистрибуция съдържа всички корекции, които сме приложили към това; версията в този файл е от книгата. Авторско право © Lucent Technologies, 1997. Всички права запазени Разрешение за използване, копиране, модифициране и разпространение на този софтуер и неговата документация за

support.microsoft

Когато модифицирате изходните файлове във Visual C++ и ги запазвате, редовете трябва да завършват с комбинацията "CR/LF" [връщане на каретка, подаване на ред]. В UNIX системите редовете завършват с "LF". Следователно, когато преглеждате файлове, които са били модифицирани в групата Windows на UNIX системи, може да видите много знаци "^M" в редовете. Това се случва само когато използвате редактор, който не знае как да интерпретира файла на Windows. Visual C++ може да отваря файлове с редове, завършващи с UNIX LF create. Ако промените този файл и го запишете от Visual C++, тогава той се записва във формат на Windows (ще видите CR/LF, а не LF, който преди това е бил в системата).

Тази статия описва процедури за запазване на модифициран файл, създаден на платформата Windows, във формат, който може да се използва на UNIX системи.

ЗАБЕЛЕЖКА: Visual C++.NET IDE съдържа налични функции за запазване на файл в UNIX формат. В IDE запишете файла с помощта на Запиши като..., изберете запазване от падащия списък Запазване с кодиране...и натиснете бутона thrn да. Изберете String Encoding от падащия списък UNIX (LF)и след това щракнете върху бутона добре.

Можете да използвате следните стъпки, за да създадете проект за конзолно приложение Win32, който преобразува файл, съдържащ "CR/LF", за да прекрати реда за "LF":

  1. За да създадете нов с помощта на Win32 конзолни приложения, празен проект с име DOS2UNIX.
  2. от Файлменю, натиснете бутона Нови след това щракнете върху бутона файловеТаб.
  3. Изберете Файл с изходен код на C/C++и въведете името на новия файл DOS2UNIX.cpp.
  4. Поставете следния код в DOS2UNIX.cpp:

    #включи #включи #включи използване на пространство от имена std; int main(int argc, char* argv) ( if(argc !=2) ( cout<< "Please specify: dos2unix filename" << endl; return 0; } char ch; char temp="\0"; //Open the file for reading in binarymode. ifstream fp_read(argv, ios_base::in \ / ios_base::binary); sprintf(temp, "%s.temp", argv); //Create a temporary file for writing in the binary mode. This //file will be created in the same directory as the input file. ofstream fp_write(temp, ios_base::out \ / ios_base::trunc \ / ios_base::binary); while(fp_read.eof() != true) { fp_read.get(ch); //Check for CR (carriage return) if((int)ch == 0x0D) continue; if (!fp_read.eof())fp_write.put(ch); } fp_read.close(); fp_write.close(); //Delete the existing input file. remove(argv); //Rename the temporary file to the input file. rename(temp, argv); //Delete the temporary file. remove(temp); return 0; }

  5. от Строителствоменю, натиснете бутона Създаване на DOS2UNIX.exeза създаване на EXE файл.

Може да се наложи да тествате този exe файл, за да видите дали работи правилно. За да направите това, отворете файла в двоичния редактор на Visual C++, когато изберете Отворетев групата Файлменю, като изберете DOS2UNIX.ex, Настройки Отворете катоНа кого Двоичени след това щракване Отворете. Например, ако файлът съдържа "hellocrlfworld", данните в двоичния файл (шестнадесетични) ще изглеждат така:

48 65 6 C 6 C 6F 0 D 0A 57 6F 72 6 C 64

Това е еквивалентно на:

здравей
Свят

В командния ред изпълнете dos2unix.exe . След това отворете файла в двоичния редактор на Visual C++. Ще видите, че 0x0d s са премахнати. Докато не промените файла и не го запишете във Visual C++, 0x0d s няма да се появи.

Това може да се използва в комбинация с Visual C++ Automation Model за автоматизиране на целия процес. Може да се напише прост макроскрипт на Microsoft Visual Basic за извикване на този инструмент, но инструментът първо трябва да бъде добавен Обслужванеменюто изглежда така:

  1. от Обслужванеменю, натиснете бутона Настройкии след това щракнете върху бутона ОбслужванеТаб.
  2. Въведете име като DOS2UNIX и предоставете пълния път до файла Dos2unix.exe в Екипполе за редактиране.
  3. Задайте аргумента на $(Filename)$(FileExt).
  4. Посочете изходната директория $(WkspDir) (посочете свой собствен път).

За да проверите работата на програмата, отворете файла в редактора на Visual C++ и след това от Обслужванестартово меню DOS2UNIXозначава. Ще видите, че файлът, отворен в редактора, е с премахнати всички символи CR.

Ако искате да автоматизирате този процес, управлявайте го така, че всеки път, когато записвате отворен файл в редактора на Visual C++, DOS2UNIX.exe се извиква, за да премахне 0x0d s, след което използвайте следния макрос на VBScript:

"Това събитие се задейства всеки път, когато документът се записва във VC++ Editor. Sub Application_DocumentSave(theDocument) "Това ще извика потребителския инструмент в менюто Инструменти. "Променете номера в зависимост от това, което имате. По подразбиране имате само 6 инструмента в менюто Инструменти, така че инструментът DOS2UNIX ще бъде 7-ми. ExecuteCommand "UserTool7" End Sub

Този VBScript код ще работи само ако имате отворени файлове в Visual C++ Editor. Това е единственият начин да извикате exe файл от VBScript макрос (VBScript макросите не могат да бъдат предавани като параметри). Можете да пишете вместо това и ще бъде по-гъвкаво. Извикайте инструмента "DOS2UNIX.exe" от добавка, без да се налага да го добавяте Обслужванеменю.

В Visual C++ с помощта на предоставения макрос VBScript:

  1. Отворете съществуващ файл с разширение .dsm или създайте такъв.
  2. Поставете предварително дадения код във файла.
  3. В Visual C++ направете следното:
    1. от Обслужванеменю, натиснете бутона Настройки.
    2. Щракнете върху бутона Файлове за макроси и добавкиТаб.
    3. Щракнете върху бутона Прегледзаредете .dsm файла, съдържащ макроса. След като в .dsm файлът беше избран в Прегледдиалогов прозорец, в който ще се появи файлът Добавки и макросисписък с файлове, като използвате избраното квадратче за отметка до него.
    4. Щракнете върху бутона затворида продължим.

Сега, ако отворите файла в редактора на Visual C++ и запишете от файла Файлменю, наречено макрос и всички 0x0d ще бъдат премахнати от отворения файл. Тъй като това ще засегне всеки файл, запазен от сега нататък и приложен към всеки проект, който отворите в бъдеще, не забравяйте да деактивирате макроса от Обслужванеизползване на менюто Настройки(махнете отметката от квадратчето до макроса).



Можете правилно да включите .C или .CPP файлове в други изходни файлове. В зависимост от вашата IDE обикновено можете да предотвратите двойно свързване, като прегледате свойствата на изходните файлове, които искате да включите, обикновено като щракнете с десния бутон върху тях и щракнете върху свойства и махнете отметката от /проверете компилацията/връзка/изключете от компилация или всяка друга опция . Може би. Или не можете да включите файла в самия проект, така че IDE дори не знае, че съществува и няма да се опита да го компилира. И с makefiles просто не сте поставили файла в него за компилиране и свързване.

РЕДАКТИРАНЕ: Съжалявам, дадох отговор, вместо да отговоря на други отговори :(

В зависимост от вашата среда за изграждане (няма да уточнявате) може да откриете, че тя работи точно както искате.

Въпреки това, има много среди (както IDE, така и много ръчно изработени Makefiles), които очакват *.c да бъде компилиран - ако това се случи, вероятно ще срещнете грешки при свързване поради дублиращи се символи.

По принцип тази практика трябва да се избягва.

Ако абсолютно # трябва да включите източника (и това обикновено трябва да се избягва), използвайте различен файл за файла.

Реших да споделя ситуация, при която екипът ми реши да включи .c файлове. Нашият архитект се състои основно от модули, които са разделени чрез система за съобщения. Тези манипулатори на съобщения са публични и извикват много локални статични работни функции, за да свършат работата си. Проблемът възникна, когато се опитахме да получим покритие за нашите единични тестови случаи, тъй като единственият начин да внедрим този частен код за внедряване беше индиректно чрез общия интерфейс за съобщения. С някои функции за работа в скута в стека, това се оказа кошмар за осигуряване на правилно покритие.

Включването на .c файлове ни даде възможност да стигнем до зъбното колело в машината, което беше забавно да тестваме.

Включването на C файл в друг файл е законно, но не е препоръчително, освен ако не знаете точно защо го правите и какво се опитвате да постигнете.
Почти съм сигурен, че ако публикувате тук причината, поради която въпросът ви ще бъде съобщен на общността, ще намерите друг подходящ начин да постигнете целта си (обърнете внимание на „почти“, тъй като е възможно това да е решение, предвид контекста ).

Между другото, пропуснах втората част от въпроса. Ако C файл е включен в друг файл и в същото време е включен в проект, вероятно ще се натъкнете на проблема с дублирани символи, защо свързването на обекти, т.е. една и съща функция ще бъде дефинирана два пъти (освен ако не са статични).

Езикът C не забранява този тип #include, но получената единица за превод все още трябва да е валиден C.

Не знам каква програма използвате с .prj файла. Ако използвате нещо като "make" или Visual Studio или каквото и да е, просто се уверете, че сте го задали на списък с файлове, които трябва да бъдат компилирани, без такъв, който не може да бъде компилиран независимо.

трябва да добавите заглавка като тази

#включи

забележка: двата файла трябва да бъдат поставени на едно и също място

Можете да използвате gcc компилатора на linux, за да свържете два файла с един изход. Да кажем, че имате два c файла, единият е "main.c", а другият е "support.c". Така че командата за свързване на тези две е

Gcc main.c support.c -o main.out

Тези два файла ще бъдат свързани с един main.out. За да стартирате изхода, командата ще бъде

./главен.изход

Ако използвате функция main.c, която е декларирана във файла support.c, тогава трябва да я декларирате в main, като използвате и extern клас за съхранение.

Разширението на файла няма значение за повечето C компилатори, така че това ще работи.

Въпреки това, в зависимост от настройките на вашия файл или проект, включеният c файл може да генерира отделен обектен файл. Когато е свързано, това може да доведе до двойно дефинирани знаци.



 


Прочетете:



Използване на стилове в Excel Как да създадете свой собствен нов стил

Използване на стилове в Excel Как да създадете свой собствен нов стил

Ако постоянно използвате едни и същи опции за форматиране на клетки от работен лист във вашите електронни таблици, може би е разумно да създадете стил на форматиране...

Какви грешки възникват по време на инсталацията?

Какви грешки възникват по време на инсталацията?

Забележка: Програмите AutoLISP могат да се изпълняват само на пълната версия на AutoCAD, те не работят под AutoCAD LT. (с изключение на случаите на зареждане...

Социален статус на човек в обществото

Социален статус на човек в обществото

Предложете какво определя избора на човек за основния му статус. Използвайки текста и фактите от социалния живот, направете две предположения и...

Пълна интерпретация на грешките

Пълна интерпретация на грешките

Доста потребители са се сблъскали с феномена син екран на смъртта. Какво да направите (Windows 7 най-често е предразположен към този проблем)...

feed-image RSS