У меня есть код, который я не могу скомпилировать на одном компьютере. Он работает на моем ПК, но по другому он не работает. Ошибка «переопределение typdef CPLX», хотя у меня есть охранник на каждом файле заголовка и у меня есть охранник для каждого определения typdef:Переопределение типа в c, но защита включена?
#ifdef __cplusplus
#include <complex>
#include <cmath>
typedef std::complex<double> cplx;
#else
#include <tgmath.h>
typedef double complex cplx;
#endif
Почему происходит это проблемы? Вот два файла заголовка. blas.h:
#ifndef BLAS_H
#define BLAS_H
#ifdef __cplusplus
#include <complex>
#include <cmath>
typedef std::complex<double> cplx;
#else
#include <tgmath.h>
typedef double complex cplx;
#endif
//declaration of functions
#endif
и lapack.h:
#ifndef LAPACK_H
#define LAPACK_H
#ifdef __cplusplus
#include <complex>
#include <cmath>
typedef std::complex<double> cplx;
#else
#include <tgmath.h>
typedef double complex cplx;
#endif
//declarations of functions
#endif
Проблема заключается в том, когда я включаю как, lapack.h и blas.h, я получаю эту ошибку?
Там нет [охранник] (https://en.wikipedia.org/wiki/Include_guard) в данный образец фактически :). – AlexD
Я включил охранников в файлы заголовков. Поэтому каждый заголовочный файл содержит охрану в начале. Кроме того, я включил охранников в определение типа. (например, описанный выше код). – user3616359
@ user3616359 Показать код вашего файла заголовка. –