Stanford Compilers Flashcards

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?

A

n(ext)

21
Q

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

A

s(tep)

22
Q

Jaka komenda wypiszę wartość zmiennej?

A

p(rint)

23
Q

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

A

l(ist)

24
Q

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

A

c(ontinue)

25
Q

[gdb] W jaki sposób prawidłowo przekazać dodatkowe argumenty podczas wywolania programu z terminala?

A

gdb **–args **./lexer test.cl

26
Q

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ć)?

A

Po wprowadzeniu komendy i jej zatwierdzeniu, można użyć <return> aby niejawnie wprowdzać ostatnią komendę.</return>

27
Q

[gdb] Jaką komendą uruchomić/wznowić program?

A

r(un)

28
Q

Czy podczas wznowienia programu dodatkowe argumenty przekazane z terminala potrzeba wprowadzać ponownie?

A

Nie ma takiej potrzeby.

29
Q

Jaką komendą opuścić debugger?

A

q(uit)

30
Q

[gdb] W jaki sposób przekazać argumenty z sesji gdb?

A

set args arg1 arg2 … argN

31
Q

[gdb] Jaka komenda ustawi przerwanie na konkretnej linii?

A

break line

32
Q

[gdb] Jaką komendą uzyskać informacje o założonych przerwaniach?

A

info break

33
Q

[gdb] Jaką komendą można usunąć przerwanie nr 1?

A

break 1

34
Q

[gdb] Zdefiniuj warunkowe przerwanie programu dla dowolnego warunku.

A

b *nazwa funkcji *if warunek na wykonanie

35
Q

[gdb] W jaki sposób ustawić przerwanie na danym pliku źródłowym w konkretnej linii?

A

break *nazwa pliku *: numer linii

36
Q

[gdb] W jaki sposób ustawić przerwanie na nazwie funkcji znając jej dopasowanie po wyrażeniu regularnym?

A

rbreak wyrażenie regularne

37
Q

[gdb] W jaki sposób pozbyć się wszystkich przerwań?

A

Komendą delete bez parametrów

38
Q

[shell] Jaki przełącznik grep pozwala ujrzeć numer linii gdzie zwrócono dopasowanie?

A

-n

39
Q

[shell] Jaki przełącznik grep pozwala wprowadzić regularne wyrażenie zaraz po nim?

A

-e wyrażenie regularne

40
Q

[gdb] W jaki sposób wywołać komendę terminalową z gdb?

A

shell

41
Q

[gdb] Jaka komenda spowoduje obserwowcje zmienną globalną (przy zapisie)?

A

watch **zmienna globalna

42
Q

[gdb] Jakie informacje zostaną wyświetlone gdy zadziała watch?

A

Stara wartość, nowa wartość oraz linia na której program się zatrzymał.

43
Q

[gdb] Czy komenda info break podaje statystyki wywołań danego przerwania?

A

Tak.

44
Q

[gdb] Jaką komendą można wyświetlić argumenty programu?

A

info args

45
Q

[gdb] Jaka komenda wyświetli wartości zmiennych lokalnych dla aktualnej ramki?

A

info locals

46
Q

[gdb] W jaki sposób wyświetlać wartość zmiennej przy każdym przerwaniu?

A

display **nazwa zmiennej

47
Q

[gdb] Jaka komenda wyświetli zawartość rejestrów ogólnego przeznaczenia dla aktualnego wątka?

A

info registers

48
Q

[gdb] Jaka komenda wyświetli zawartość wszystkich rejestrow dla aktualnego wątka?

A

info all-registers