Директива препроцессора (определение) не найдена компилятором - PullRequest
0 голосов
/ 17 мая 2018

Я занимаюсь разработкой библиотеки, в которой размер некоторых переменных зависит от #define и некоторых #define, которые создаются в зависимости от значения другого # define.

например,

int variable1[SIZE_USER]
#if SIZE_USER>3
  #define CONDITION 1
#else
  #define CONDITION 0
#endif

Идея состоит в том, что когда пользователь хочет работать с библиотекой, он создает собственный заголовочный файл со всеми необходимыми директивами препроцессора (#define) и использует этот файл в том же каталоге, где находится файл "main.cpp" ине в исходных файлах библиотеки.

Проблема в том, что когда я включаю файл конфигурации (в котором есть все # define) в тот же каталог, где находятся все мои заголовочные файлы библиотеки, у меня нет проблем.

т.е.

#include <config.h>
//My Library Code...

Но если я объявлю файл заголовка конфигурации вне исходных файлов моей библиотеки, компилятор не найдет # define, которые были объявлены в "main.cpp"файл.

то есть

#include<config.h>
#include<myLibrary.h>
//User code...

Есть что-то очевидное, чего мне не хватает в работе компилятора?

1 Ответ

0 голосов
/ 17 мая 2018
#define SIZE_USER 4

int variable1[SIZE_USER]
#if SIZE_USER > 3
  #define CONDITION 1
#else
  #define CONDITION 0
#endif

Первая проблема - пропущены пробелы в директиве #if.

#include "myLibrary.h"

Вторая проблема: используйте "" для включенных заголовков и пробелов.

...