Та же проблемаа, нету функции exported_test_function в таблице экспорта, как исправить?
$ cat > 1027136.cс
__attribute__((visibility("default"))) bool exported_test_function()
{
return true;
}
$ g++ -fPIC -shared 1027136.cc -o 1027136.so
$ objdump -T 1027136.so
1027136.so: file format elf64-x86-64
DYNAMIC SYMBOL TABLE:
0000000000000000 w DF *UND* 0000000000000000 GLIBC_2.2.5 __cxa_finalize
0000000000000000 w D *UND* 0000000000000000 _ITM_deregisterTMCloneTable
0000000000000000 w D *UND* 0000000000000000 __gmon_start__
0000000000000000 w D *UND* 0000000000000000 _ITM_registerTMCloneTable
00000000000010f5 g DF .text 000000000000000b Base _Z22exported_test_functionv
#include <iostream>
#include <thread>
#include <vector>;
using namespace std;
void go(int p) {
while (1) {
cout << p << endl;
}
}
void main() {
thread *t[3];
for (int i = 0; i <= 2; i++) {
t[i] = new thread(go, i);
cout << 123;
}
for (int i = 0; i <= 2; i++) {
t[i]->join();
delete t[i];
}
}
int a(10); // работает
MyStruct b(); // не работает
int a(); // не работает
MyStruct b(); // не работает
int a(10); // работает
MyStruct b(10); // работает
Но столкнулся с такой проблемой: если первая функция возвращает true, то вторая функция даже не выполняется. Если поменять or на and, то ситуация повторяется, но наоборот: если первая возвращает false, то вторая не выполняется.
как-то обойти?
bool f1 = func(1);
bool f2 = func(2);
if (f1 || f2)
while (func(1) | func(2))
Square_matrix::Square_matrix(unsigned int size) { if (size < 1) std::cerr << "Invalid matrix size" << '\n'; else if (size == 1) { this->size = 1; Square_matrix(); }
если передается size == 1, я вызываю конструктор по умолчанию
Square_matrix();
-- это не вызов конструктора по умолчанию для текущего объекта. Возможно ли это сделать на практике?
Зачем нужны header guards если в заголовочных файлах мы пишем только объявление функции?
books[nst] = book;
В чём может быть ошибка
books
не выделено место для nst
объектов.раннее были записаны данные в виде двух строчек string и двух чисел int (структуры, в общем)
std::string
, а значит вся затея с fread
обречена на провал. Я открыл файл base.txt, прочитал, получил значение (строку) и присвоил строку к ss
URLDownloadToFile(0, "url/base.txt", "base.txt", 0, 0); std::remove("base.txt"); // Удаляю старый файл, если он имеется std::ifstream f("base.txt");