#include в препроцессоре
От: Аноним  
Дата: 27.06.08 09:02
Оценка:
Доброго времени суток!

Как сделать так, чтобы для #include можно было задать файл для включения через какой-нибудь макрос? Что-то вроде такого:

#define FILE_NAME "path/filename.h"

#include FILE_NAME
Re: #include в препроцессоре
От: php-coder Чехия http://slava-semushin.blogspot.com
Дата: 27.06.08 09:07
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Доброго времени суток!


А> Как сделать так, чтобы для #include можно было задать файл для включения через какой-нибудь макрос? Что-то вроде такого:


А>
А>#define FILE_NAME "path/filename.h"

А>#include FILE_NAME
А>


А разве это не работает?! AFAIK, должно.
Re: #include в препроцессоре
От: Аноним  
Дата: 27.06.08 09:08
Оценка:
Здравствуйте, Аноним, Вы писали:

Точнее, что вроде такого:
А>
А>#define PATH_NAME "path/"

А>#include PATH_NAME ## "filename.h"
А>
Re[2]: #include в препроцессоре
От: php-coder Чехия http://slava-semushin.blogspot.com
Дата: 27.06.08 09:11
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:


А> Точнее, что вроде такого:

А>>
А>>#define PATH_NAME "path/"

А>>#include PATH_NAME ## "filename.h"
А>>


#include PATH_NAME "filename.h"
Re: #include в препроцессоре
От: jazzer Россия Skype: enerjazzer
Дата: 27.06.08 09:11
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Доброго времени суток!


А> Как сделать так, чтобы для #include можно было задать файл для включения через какой-нибудь макрос? Что-то вроде такого:


А>
А>#define FILE_NAME "path/filename.h"

А>#include FILE_NAME
А>


оно и так должно работать
разве что, возможно, FILE_NAME должен быть просто path/filename.h, без кавычек.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: #include в препроцессоре
От: michael_srv  
Дата: 27.06.08 09:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Доброго времени суток!


А> Как сделать так, чтобы для #include можно было задать файл для включения через какой-нибудь макрос? Что-то вроде такого:


А>
А>#define FILE_NAME "path/filename.h"

А>#include FILE_NAME
А>


именно так и работает.
Re[2]: #include в препроцессоре
От: php-coder Чехия http://slava-semushin.blogspot.com
Дата: 27.06.08 09:18
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:


А> Точнее, что вроде такого:

А>>
А>>#define PATH_NAME "path/"

А>>#include PATH_NAME ## "filename.h"
А>>


Можно так:

#define CONCAT(a,b) <a/b>
#define PATH_NAME "path"
#include CONCAT(PATH_NAME,filename.h)
Re[3]: #include в препроцессоре
От: Аноним  
Дата: 27.06.08 09:18
Оценка:
Здравствуйте, php-coder, Вы писали:

Компилятор MSVC 9.0 пишет следующее:

warning C4067: unexpected tokens following preprocessor directive — expected a newline
fatal error C1083: Cannot open include file: 'path/': No such file or directory


'path/', а не 'path/filename.h'.
Re[3]: #include в препроцессоре
От: php-coder Чехия http://slava-semushin.blogspot.com
Дата: 27.06.08 09:19
Оценка:
Здравствуйте, php-coder, Вы писали:

PC>
PC>#define CONCAT(a,b) <a/b>
PC>#define PATH_NAME "path"
PC>#include CONCAT(PATH_NAME,filename.h)
PC>


P.S.: "path" здесь нужно без кавычек.
Re[3]: #include в препроцессоре
От: Аноним  
Дата: 27.06.08 09:24
Оценка:
Здравствуйте, php-coder, Вы писали:

PC>
PC>#define CONCAT(a,b) <a/b>
PC>#define PATH_NAME "path"
PC>#include CONCAT(PATH_NAME,filename.h)
PC>


Работает, спасибо. Только правильней:
#define PATH_NAME path
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.