Size: a a a

2020 December 09

IK

Irina Khomutova in pro.cxx
// было

typedef struct {
 int *ia;
 int *ja;
 float *a;
} scsr;

typedef struct {
 int *ia;
 int *ja;
 double *a;
} dcsr;

void scsr_symmetrize(scsr * m){}
void scsr_symmetrize(dcsr *m) {}

// стало
cpptypes.h

template <typename ElementType>
struct {
 int *ia;
 int *ja;
 ElementType *a;
} csr;
extern "C"{
 typedef csr<float> scsr;
 typedef csr<double> dcsr;
}
пока набирала еще раз убедилась, что не получится. Спасибо всем
источник

AS

Anatoly Shirokov in pro.cxx
Irina Khomutova
// было

typedef struct {
 int *ia;
 int *ja;
 float *a;
} scsr;

typedef struct {
 int *ia;
 int *ja;
 double *a;
} dcsr;

void scsr_symmetrize(scsr * m){}
void scsr_symmetrize(dcsr *m) {}

// стало
cpptypes.h

template <typename ElementType>
struct {
 int *ia;
 int *ja;
 ElementType *a;
} csr;
extern "C"{
 typedef csr<float> scsr;
 typedef csr<double> dcsr;
}
пока набирала еще раз убедилась, что не получится. Спасибо всем
получится наследовать в С через агрегацию
источник

ПК

Побитый Кирпич... in pro.cxx
Irina Khomutova
// было

typedef struct {
 int *ia;
 int *ja;
 float *a;
} scsr;

typedef struct {
 int *ia;
 int *ja;
 double *a;
} dcsr;

void scsr_symmetrize(scsr * m){}
void scsr_symmetrize(dcsr *m) {}

// стало
cpptypes.h

template <typename ElementType>
struct {
 int *ia;
 int *ja;
 ElementType *a;
} csr;
extern "C"{
 typedef csr<float> scsr;
 typedef csr<double> dcsr;
}
пока набирала еще раз убедилась, что не получится. Спасибо всем
Посмотри моё сообщение
источник

D

Danya in pro.cxx
Irina Khomutova
// было

typedef struct {
 int *ia;
 int *ja;
 float *a;
} scsr;

typedef struct {
 int *ia;
 int *ja;
 double *a;
} dcsr;

void scsr_symmetrize(scsr * m){}
void scsr_symmetrize(dcsr *m) {}

// стало
cpptypes.h

template <typename ElementType>
struct {
 int *ia;
 int *ja;
 ElementType *a;
} csr;
extern "C"{
 typedef csr<float> scsr;
 typedef csr<double> dcsr;
}
пока набирала еще раз убедилась, что не получится. Спасибо всем
https://t.me/ProCxx/418938
А это не поможет?
источник

IK

Irina Khomutova in pro.cxx
Побитый Кирпич
Посмотри моё сообщение
уже перешла - смотрю, спасибо
источник

IZ

Ilia Zviagin in pro.cxx
Roman Proskuryakov
как мне заставить компилятор ругаться на С++?
Так он же и так ругается... Что тебе ещё-то надо?
источник

IZ

Ilia Zviagin in pro.cxx
Irina Khomutova
// было

typedef struct {
 int *ia;
 int *ja;
 float *a;
} scsr;

typedef struct {
 int *ia;
 int *ja;
 double *a;
} dcsr;

void scsr_symmetrize(scsr * m){}
void scsr_symmetrize(dcsr *m) {}

// стало
cpptypes.h

template <typename ElementType>
struct {
 int *ia;
 int *ja;
 ElementType *a;
} csr;
extern "C"{
 typedef csr<float> scsr;
 typedef csr<double> dcsr;
}
пока набирала еще раз убедилась, что не получится. Спасибо всем
extern "C" для типов данных бессмысленен и не нужен.
источник

RP

Roman Proskuryakov in pro.cxx
Ilia Zviagin
Так он же и так ругается... Что тебе ещё-то надо?
это ошибка линковки. .o могут собраться из С и С++ в одном месте и ошибки не будет. А я хочу, чтобы компилятор ругался на присутствие С++
источник

IK

Irina Khomutova in pro.cxx
Ilia Zviagin
extern "C" для типов данных бессмысленен и не нужен.
Приняла
источник

IZ

Ilia Zviagin in pro.cxx
Irina Khomutova
уже перешла - смотрю, спасибо
А кто описывает эти структуры?
Ты или это API, которое ты использоуешь?
источник

ПК

Побитый Кирпич... in pro.cxx
Roman Proskuryakov
это ошибка линковки. .o могут собраться из С и С++ в одном месте и ошибки не будет. А я хочу, чтобы компилятор ругался на присутствие С++
Если код скомпилировался, то значит там Си код
источник

IZ

Ilia Zviagin in pro.cxx
Roman Proskuryakov
это ошибка линковки. .o могут собраться из С и С++ в одном месте и ошибки не будет. А я хочу, чтобы компилятор ругался на присутствие С++
Ну он же и ругается!
источник

IZ

Ilia Zviagin in pro.cxx
Roman Proskuryakov
это ошибка линковки. .o могут собраться из С и С++ в одном месте и ошибки не будет. А я хочу, чтобы компилятор ругался на присутствие С++
С - часть С++,  ты хочешь, чтобы оно у тебя всегда ругалось?
Ведь, если там есть С, то есть и С++
источник

ПК

Побитый Кирпич... in pro.cxx
Roman Proskuryakov
это ошибка линковки. .o могут собраться из С и С++ в одном месте и ошибки не будет. А я хочу, чтобы компилятор ругался на присутствие С++
Короче то что ты хочешь это дело билд системы а не компилятора
источник

RP

Roman Proskuryakov in pro.cxx
Ilia Zviagin
С - часть С++,  ты хочешь, чтобы оно у тебя всегда ругалось?
Ведь, если там есть С, то есть и С++
Но ведь С не часть С++ с конца 80 годов. Ладно, я понял, всем спасибо, не буду отвлекать.
источник

IZ

Ilia Zviagin in pro.cxx
Irina Khomutova
Приняла
Для чего это всё нужно-=то? Ты так и не объяснила
источник

ПК

Побитый Кирпич... in pro.cxx
Roman Proskuryakov
Но ведь С не часть С++ с конца 80 годов. Ладно, я понял, всем спасибо, не буду отвлекать.
Сишный компилятор не должен детектить С++ код. Вообще не уверен что это принципиально решаемая задача
источник

IZ

Ilia Zviagin in pro.cxx
Roman Proskuryakov
Но ведь С не часть С++ с конца 80 годов. Ладно, я понял, всем спасибо, не буду отвлекать.
Часть, часть.
источник

IZ

Ilia Zviagin in pro.cxx
Roman Proskuryakov
Но ведь С не часть С++ с конца 80 годов. Ладно, я понял, всем спасибо, не буду отвлекать.
Это всё гон,  обманули тебя...
источник

D

Danya in pro.cxx
Ilia Zviagin
Это всё гон,  обманули тебя...
Илья, что за дезинфа
источник