Stanford Compilers Flashcards

(48 cards)

1
Q

Co oznacza poniższa deklaracja w C++?

extern int foo();

A

Do funkcji foo nie można przekazać parametrów

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Co oznacza poniższa deklaracja w C?

extern int foo();

A

Do funkcji foo można przekazać dowolną liczbę parametrów z dowolnymi typami.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Jakiej kontrukcji użyć aby można było używać funkcji napisanych w C z kodu C++?

A

Po słowie kluczowym extern wpisać “C”, jak poniżej:

extern “C” int foo(int a, char* b);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Co się stanie jeżeli nazwę funkcji zdefiniowanej gdzie indziej słowem kluczowym extern bez dodatkowej klauzuli “C” ?

A

Kompilator nazwię funkcję po swojemu i nie będzie to pierwotnie zapisana nazwa funkcji.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Jakie nowe słowa kluczowe występują w C++?

A

new, delete, const, class

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Jaka koncepcja programowania obiektowego gwarantuje pewność przepływu informacji w programie?

A

information hiding (ukrywanie informacji)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wymień powód dla którego warto używać klas?

A

Łatwiej jest zorganizować program, jeżeli dane oraz funkcje na nich operujące są w jednym miejscu.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Jak nazywa się wskaźnik do obiektu, który zawiera definicję funkcji składowej z której nastąpiło wywołanie?

A

this

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Czy wewnątrz funkcji składowej wywołanie innej funkcji składowej poprzez this-> jest domniemane?

A

Tak, jest domniemane.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Co możemy zyskać używajac funkcji dostępowych do pól klas i uczynić te pola klas prywatnymi?

A

Dodatkową modularność, jako, że możemy zredefiniować sposób w jaki przechowywane są dane bez zmiany dostępu do nich.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Czy konstruktor można umieścić w dowolnej sekcji (public, private, protected)?

A

Tak, w dowolnej.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Czy konstruktor zwraca wartość?

A

Nie zwraca

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Czy poniższa deklracja z inicjalizacją jest poprawna?

Stack stack2 = new Stack(17);

A

Nie jest poprawna, operator new zwraca wskaźnik na obiekt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

define dlugosc_pola 12

Jaką konstrukcją można zastąpić poniższą dyrektywę preprocesora

A

const int dlugosc_pola = 8;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Czy w definicji klasy w sekcji składowych funkcji można inlineować funkcje?

A

Można, chociaż nie jest to zalecane, należy rozdzielić nagłówek od implementacji.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Co można stwierdzić patrząc na poniższy listing (znaczenie ma wytłuszczony druk)

class {

bool Full() const;

};

A

Funkcja składowa Full nigdy nie modyfikuje danych składowych klasy

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Co się stanie przy próbie dealokacji pamięci automatycznej słowem kluczowym delete?

A

Wiadomość z biblioteki glibc - Invalid pointer, ze stack trace

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

[gdb] Jaką komendą ustawić szerokość linii?

A

**set **width 70

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

[gdb] Jaką komendą ustawić przerwanie na nazwię funkcji?

A

break **nazwa funkcji

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

[gdb] Jaka komenda spowoduje wykonanie aktualnej instrukcji i przeniesie do następnej instrukcji w ramach wykonywanej funkcji?

21
Q

[gdb] Jakiej komendy należy użyć aby przenieść się do następnej linii kodu w dowolnej funkcji?

22
Q

Jaka komenda wypiszę wartość zmiennej?

23
Q

[gdb] Jaka komenda wypisze kontekst aktualnie przetwarzanej linii kodu?

24
Q

Jaka komenda pozwoli debuggerowi wykonać dalszą część programu?

25
[gdb] W jaki sposób prawidłowo przekazać dodatkowe argumenty podczas wywolania programu z terminala?
gdb **--args **./lexer test.cl
26
Mając series poleceń jak poniżej 1069 register YY\_CHAR yy\_c = yy\_ec[YY\_SC\_TO\_UI(\*yy\_cp)]; (gdb) n 1070 if ( yy\_accept[yy\_current\_state] ) (gdb) n 1072 (yy\_last\_accepting\_state) = yy\_current\_state; (gdb) n 1073 (yy\_last\_accepting\_cpos) = yy\_cp; (gdb) n 1075 while ( yy\_chk[yy\_base[yy\_current\_state] + yy\_c] != yy\_current\_state ) jak można ułatwić sobie życie w tej sytuacji (jeżeli szukam kontekstu gdzie mogę się zatrzymać)?
Po wprowadzeniu komendy i jej zatwierdzeniu, można użyć aby niejawnie wprowdzać ostatnią komendę.
27
[gdb] Jaką komendą uruchomić/wznowić program?
**r**(un)
28
Czy podczas wznowienia programu dodatkowe argumenty przekazane z terminala potrzeba wprowadzać ponownie?
Nie ma takiej potrzeby.
29
Jaką komendą opuścić debugger?
**q**(uit)
30
[gdb] W jaki sposób przekazać argumenty z sesji gdb?
**set** args arg*1* arg*2* ... arg*N*
31
[gdb] Jaka komenda ustawi przerwanie na konkretnej linii?
**b**reak *line*
32
[gdb] Jaką komendą uzyskać informacje o założonych przerwaniach?
**i**nfo **b**reak
33
[gdb] Jaką komendą można usunąć przerwanie nr 1?
**b**reak 1
34
[gdb] Zdefiniuj warunkowe przerwanie programu dla dowolnego warunku.
**b** *nazwa funkcji *if *warunek na wykonanie*
35
[gdb] W jaki sposób ustawić przerwanie na danym pliku źródłowym w konkretnej linii?
**b**reak *nazwa pliku *: *numer linii*
36
[gdb] W jaki sposób ustawić przerwanie na nazwie funkcji znając jej dopasowanie po wyrażeniu regularnym?
**rb**reak *wyrażenie regularne*
37
[gdb] W jaki sposób pozbyć się wszystkich przerwań?
Komendą **d**elete bez parametrów
38
[shell] Jaki przełącznik grep pozwala ujrzeć numer linii gdzie zwrócono dopasowanie?
-**n**
39
[shell] Jaki przełącznik grep pozwala wprowadzić regularne wyrażenie zaraz po nim?
-**e** *wyrażenie regularne*
40
[gdb] W jaki sposób wywołać komendę terminalową z gdb?
**shell**
41
[gdb] Jaka komenda spowoduje obserwowcje zmienną globalną (przy zapisie)?
**watch ***zmienna globalna*
42
[gdb] Jakie informacje zostaną wyświetlone gdy zadziała watch?
Stara wartość, nowa wartość oraz linia na której program się zatrzymał.
43
[gdb] Czy komenda **info break** podaje statystyki wywołań danego przerwania?
Tak.
44
[gdb] Jaką komendą można wyświetlić argumenty programu?
**i**nfo args
45
[gdb] Jaka komenda wyświetli wartości zmiennych lokalnych dla aktualnej ramki?
**i**nfo locals
46
[gdb] W jaki sposób wyświetlać wartość zmiennej przy każdym przerwaniu?
**display ***nazwa zmiennej*
47
[gdb] Jaka komenda wyświetli zawartość rejestrów ogólnego przeznaczenia dla aktualnego wątka?
**i**nfo registers
48
[gdb] Jaka komenda wyświetli zawartość wszystkich rejestrow dla aktualnego wątka?
**i**nfo all-registers