Скажем, у меня есть библиотека C ++, mylib , которая определяет:
#ifdef _MY_COMPILE_ARG
const int libvar = _MY_COMPILE_VAR;
#else
const int libvar = 42;
#endif
и скомпилируется с -d_my_compile_arg = 1 -d_mycompile_var = 1 . Мой вопрос: каково значение mylib :: libvar , как ожидается, будет доступен клиенту, который использует эту библиотеку?1) дается библиотеке при ее построении, mylib :: libvar в клиенте всегда 42 . Почему это так? Как клиент сможет увидеть библиотеку _MY_COMPILE_VAR < /code>?target_compile_definitions(mylib PUBLIC _MY_COMPILE_ARG=1 _MY_COMPILE_VAR=1)
#pragma once
namespace mylib {
#ifdef _MY_COMPILE_ARG
const int libvar = _MY_COMPILE_VAR;
#else
const int libvar = 42;
#endif
void print_libvar() { printf("print from lib: %d\n", libvar); }
int return_libvar() { return libvar; }
}
myclient.cpp скомпилирован с cmake as add_executable (myexec myexec.cpp) и с target_link_libraries (myexec libmylib.a)
#include "mylib.hpp"
int main()
{
printf( "direct read libvar: %d\n", mylib::libvar ); // 42
mylib::print_libvar(); // 42
printf( "returned libvar: %d\n", mylib::return_libvar() ); // 42
return 0;
}
myclient.cpp , скомпилированный с cmake as add_executable (myexec myexec.cpp) и с target_link_libraries (myexec libmylib.a) , но это время с target_compile_definitions (myexec public _my_compile_mpile_.1 _My_compile_var = -1)
#include "mylib.hpp"
int main()
{
printf( "direct read libvar: %d\n", mylib::libvar ); // -1
mylib::print_libvar(); // -1
printf( "returned libvar: %d\n", mylib::return_libvar() ); // -1
return 0;
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... -to-client
Как #define макросы и побочные продукты в библиотеке C ++ предоставляются клиентскому коду? ⇐ C++
Программы на C++. Форум разработчиков
1752954937
Anonymous
Скажем, у меня есть библиотека C ++, mylib , которая определяет:
#ifdef _MY_COMPILE_ARG
const int libvar = _MY_COMPILE_VAR;
#else
const int libvar = 42;
#endif
и скомпилируется с -d_my_compile_arg = 1 -d_mycompile_var = 1 . Мой вопрос: каково значение mylib :: libvar , как ожидается, будет доступен клиенту, который использует эту библиотеку?1) дается библиотеке при ее построении, mylib :: libvar в клиенте всегда 42 . Почему это так? Как клиент сможет увидеть библиотеку _MY_COMPILE_VAR < /code>?target_compile_definitions(mylib PUBLIC _MY_COMPILE_ARG=1 _MY_COMPILE_VAR=1)
#pragma once
namespace mylib {
#ifdef _MY_COMPILE_ARG
const int libvar = _MY_COMPILE_VAR;
#else
const int libvar = 42;
#endif
void print_libvar() { printf("print from lib: %d\n", libvar); }
int return_libvar() { return libvar; }
}
[b] myclient.cpp [/b] скомпилирован с cmake as add_executable (myexec myexec.cpp) и с target_link_libraries (myexec libmylib.a)
#include "mylib.hpp"
int main()
{
printf( "direct read libvar: %d\n", mylib::libvar ); // 42
mylib::print_libvar(); // 42
printf( "returned libvar: %d\n", mylib::return_libvar() ); // 42
return 0;
}
[b] myclient.cpp [/b], скомпилированный с cmake as add_executable (myexec myexec.cpp) и с target_link_libraries (myexec libmylib.a) , но это время с target_compile_definitions (myexec public _my_compile_mpile_.1 _My_compile_var = -1)
#include "mylib.hpp"
int main()
{
printf( "direct read libvar: %d\n", mylib::libvar ); // -1
mylib::print_libvar(); // -1
printf( "returned libvar: %d\n", mylib::return_libvar() ); // -1
return 0;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79707246/how-are-define-macros-and-by-products-in-a-c-library-made-available-to-client[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия