LINUX.ORG.RU

Господа пораскинем мозгами и инфой ... 3 Вопроса для обладателей 90 уровня ...

 , ,


0

2

Простой файлик. p.cpp

#include <iostream>
using namespace std;

string greeting = "hello";
string world("world");
string exclamation{'!'};

void p1(int i) {
    if(i == 1) cout << greeting + " 1" << endl;
    if(i == 2) cout << world + " 1" << endl;
    if(i == 3) cout << exclamation + " 1" << endl;
}
int main() {
p1(1);
p1(2);
p1(3);

    return 0;
}

g++ p.cpp получаем a.out Вопрос 1: Хочется например чтобы при чтении world gdb брейкнулся. То есть смысл простой при попытке чтения world и им подобным string`ам gdb останавливался … P.S. обращаю внимание тут string, а не с-строки. Вопрос 2: Таже история но нет исходников. Ну и вопрос 3: Если елф strip. Но в нем видны эти world и т.д. То есть по сути надо поставить брейк на доступ к памяти в виде string.



Последнее исправление: dust (всего исправлений: 1)

Ответ на: комментарий от her_s_gory

Ну давай вернёмся к using. Если max это макрос (что странно, макросы обычно называют большими буквами, ну да ладно), то using тебе не поможет, ибо cpp этот макрос развернёт всё равно.

vbr ★★★★
()
Ответ на: комментарий от vbr

Ну давай вернёмся к using. Если max это макрос (что странно, макросы обычно называют большими буквами, ну да ладно), то using тебе не поможет, ибо cpp этот макрос развернёт всё равно.

Давай :)

max определён в виндовых заголовочных файлах именно строчными буквами. Уроды, конечно, но что есть, то есть.
Написав using namespace std; Мы не заметим, что допустим два вызова одной из функций в выражени max(foo(),bar()).
Имея привычку писать std::max, мы получим ошибку компиляции, ругнёмся и сделаем (std::max)(foo(), bar())

her_s_gory
()
Ответ на: комментарий от vbr

PS лучше это решать через определение макроса NOMINMAX если верить интернетам.

Не всегда получается почему-то. На одной кодовой базе это был таск на неделю работы.

her_s_gory
()