preprocessor 相关问题

处理输入数据以产生用作另一程序输入的输出的程序。有关未指定的预处理器的问题,请使用此标记。如果预处理器有特定标签,则应使用该标签。考虑使用[tag:c-preprocessor],[tag:boost-preprocessor],[tag:oracle-pro-c],[tag:css-preprocessor],[tag:karma-babel-preprocessor],[tag:m4 ]

使用 C++ 中的参数(级联宏)来观察和评估代码片段的有效方法

我在 Visual Studio IDE 中工作。我继承了一些 C++ 代码,其中定义了很多宏:就像级联宏引用了其他一些替换,再次引用了其他一些

回答 1 投票 0

MSVC 处理 ##__VA_ARGS__ 与其他编译器的比较

作为标准的扩展,## 预处理器运算符可用于“吃掉”__VA_ARGS__ 的尾随逗号。我感兴趣的所有编译器(GCC、clang、MSVC)都支持这一点。

回答 5 投票 0

Boost 预处理器传递函数中的所有结构参数

是否可以使用 boost 预处理器 API 在函数中传递结构体的所有成员 我有类似的东西,但无法编译。 #包括 #包括 是否可以使用 boost 预处理器 API 在函数中传递结构体的所有成员 我有类似的东西,但无法编译。 #include <iostream> #include <boost/preprocessor/cat.hpp> #include <boost/preprocessor/seq/for_each.hpp> #include <boost/preprocessor/seq/variadic_seq_to_seq.hpp> #include <boost/preprocessor/seq/elem.hpp> // Define a macro to generate code for passing a struct member to a function #define PASS_MEMBER_TO_FUNCTION(r, structName, elem) \ function(BOOST_PP_SEQ_ELEM(0, elem), structName.BOOST_PP_SEQ_ELEM(1, elem)); // Define a macro to iterate over struct members and pass them to a function #define PASS_MEMBERS_TO_FUNCTION(structName, members) \ BOOST_PP_SEQ_FOR_EACH(PASS_MEMBER_TO_FUNCTION, structName, BOOST_PP_VARIADIC_SEQ_TO_SEQ(members)) // Example struct struct MyStruct { int height; double width; const char* name; }; // Example function that takes struct members void function(int value, double width, const char* name) { // Your function implementation here std::cout << "Value: " << value << ", Width: " << width << ", Name: " << name << std::endl; } int main() { // Usage example MyStruct myStruct{10, 20.5, "example"}; PASS_MEMBERS_TO_FUNCTION(myStruct, ((int, height))((double, width))((const char*, name))); return 0; } 使用 Boost PFR,您不需要预处理器: std::apply(function, boost::pfr::structure_tie(myStruct)); 演示 在 Coliru 上直播: #include <boost/pfr.hpp> #include <iostream> struct MyStruct { int height; double width; char const* name; }; // Example function that takes separate parameters void function(int value, double width, char const* name) { std::cout << "Value: " << value << ", Width: " << width << ", Name: " << name << std::endl; } int main() { // Usage example MyStruct myStruct{10, 20.5, "example"}; apply(function, boost::pfr::structure_tie(myStruct)); } 印刷 Value: 10, Width: 20.5, Name: example

回答 1 投票 0

Boost 预处理器传递函数中的所有结构参数

是否可以使用 boost 预处理器 API 在函数中传递结构体的所有成员 我有类似的东西,但无法编译。 #包括 #包括 是否可以使用 boost 预处理器 API 在函数中传递结构体的所有成员 我有类似的东西,但无法编译。 #include <iostream> #include <boost/preprocessor/cat.hpp> #include <boost/preprocessor/seq/for_each.hpp> #include <boost/preprocessor/seq/variadic_seq_to_seq.hpp> #include <boost/preprocessor/seq/elem.hpp> // Define a macro to generate code for passing a struct member to a function #define PASS_MEMBER_TO_FUNCTION(r, structName, elem) \ function(BOOST_PP_SEQ_ELEM(0, elem), structName.BOOST_PP_SEQ_ELEM(1, elem)); // Define a macro to iterate over struct members and pass them to a function #define PASS_MEMBERS_TO_FUNCTION(structName, members) \ BOOST_PP_SEQ_FOR_EACH(PASS_MEMBER_TO_FUNCTION, structName, BOOST_PP_VARIADIC_SEQ_TO_SEQ(members)) // Example struct struct MyStruct { int height; double width; const char* name; }; // Example function that takes struct members void function(int value, double width, const char* name) { // Your function implementation here std::cout << "Value: " << value << ", Width: " << width << ", Name: " << name << std::endl; } int main() { // Usage example MyStruct myStruct{10, 20.5, "example"}; PASS_MEMBERS_TO_FUNCTION(myStruct, ((int, height))((double, width))((const char*, name))); return 0; } 使用 Boost PFR,您不需要预处理器: std::apply(function, boost::pfr::structure_tie(myStruct)); 演示 在 Coliru 上直播: #include <boost/pfr.hpp> #include <iostream> struct MyStruct { int height; double width; char const* name; }; // Example function that takes separate parameters void function(int value, double width, char const* name) { std::cout << "Value: " << value << ", Width: " << width << ", Name: " << name << std::endl; } int main() { // Usage example MyStruct myStruct{10, 20.5, "example"}; apply(function, boost::pfr::structure_tie(myStruct)); } 印刷 Value: 10, Width: 20.5, Name: example

回答 1 投票 0

Python 的 C 预处理器宏等效项

我习惯在 C 中定义宏(不仅仅是常量) #定义循环(i,a,b) for(i=a; i 我习惯在 C 中定义宏(不仅仅是常量) #define loop(i,a,b) for(i=a; i<b; ++i) #define long_f(a,b,c) (a*0.123 + a*b*5.6 - 0.235*c + 7.23*c - 5*a*a + 1.5) 有没有办法在 python 中使用 preprocess 而不是函数来做到这一点? *通过预处理我的意思是在运行代码之前替换定义的出现(实际上不是整个代码,而是代码的其余部分,因为由于它是代码的一部分,我想它将在运行时替换所有内容) . 如果有的话值得吗?运行时间会有显着差异吗? 有办法吗?是的。总有办法的。你应该这样做吗?可能不是。 只需定义一个函数即可完成您想要的操作。如果您只是担心代码变得很长并且想要单行代码,则可以使用 lambda 函数。 long_f = lambda a,b,c: a*0.123 + a*b*5.6 - 0.235*c + 7.23*c - 5*a*a + 1.5 long_f(1,2,3) == 28.808 当然,你的第一个示例在 Python 中已经更漂亮了。 for i in range(a,b): ... 编辑:为了完整起见,我应该按要求回答问题。如果您绝对必须预处理 Python 代码,则可以使用任何专为网页等模板化而设计的编程语言。例如,我听说 PHP 用于预处理代码。您无需编写 HTML,而是编写代码。当您想要预处理某些内容时,您可以执行 PHP 块。 好吧,如果您要执行一些可以提前执行的非常困难的计算,那么,也许这是有道理的:通常用户对快速程序而不是慢速程序更满意。 但是,当谈到“原始性能”(即算术计算的速度)时,我担心 python 并不是一个好的选择。至少如果我们谈论标准 python 实现,称为 CPython。 或者,您可以检查其他变体: PyPy。这是纯 Python 中的替代 Python 实现。感谢 JIT 编译器,它提供了更好的性能,但需要更多的内存。 Cython。这是 Python 的扩展,它允许人们[方便地]为代码的性能关键部分创建可编译的片段。 使用您喜欢的任何外部预处理器。我首先想到的是M4和FilePP,但是它们有很多。 答案是否定的,在 python 中,你实际上不能像 C、C++、PL/1、汇编器等那样包含“内联/流/任何内容”的代码。此功能的实现发生在初始宏/处理器/语法期间经过。它可以很容易地添加,并且有很多原因可能希望直接内联包含代码而不将其作为函数的一部分。此功能使得在多个类或函数定义中使用相同的代码片段成为可能。例如,如果没有它,在多个类中定义相同的 GTK+ 元素会很痛苦。这种能力的缺乏与解释无关,因为它发生在句法分析之前。它不包含在 perl 和 python 等解释性脚本语言中,只是因为开发人员不想提供该功能。 import inspect frame = inspect.currentframe() print(f"{frame.f_lineno}\tdebugtext") l = lambda: frame.f_lineno print(f"{l()}\tdebugtext")

回答 4 投票 0

预处理后DTS的最终状态

简而言之,有效的 DTS 文件经过 C 预处理器后的最终文本状态是什么? #include 指令到底应该留下什么?这是多少 dtc

回答 1 投票 0

如何使用 tweet nlp 找到给定句子的最准确标记?

我发现 Twitter nlp 在标记方面很有帮助。它给出了给定一个句子的所有可能的标签。 “GM先生”给出 早上好先生|总经理先生|通用汽车先生|好比赛先生|游戏大师先生|G...

回答 2 投票 0

如何使用 PrimeFaces DataExporter 将数据表每一行的图像导出为 pdf?

我有一个 XHTML,显示数据表中的行,其中有几个文本列和一个图像列。我已经能够导出 pdf 中所有记录的文本列,但无法导出

回答 2 投票 0

'cpp' vs. “clang”预处理行为

a.txt 一段文字 #include“b.txt” b.txt 乙文本 如果我们使用 cpp -P a.txt 预处理上述文件,我们会在控制台中得到以下输出: 一段文字 乙文本 然而,如果我们尝试预先

回答 1 投票 0

如何在C++预处理器中扩展布尔表达式?

以下代码不展开布尔表达式,另见https://godbolt.org/z/YqbazT3eo: #定义 EXPAND(x) x #定义开关假 扩展(开关 || 定义(_DEBUG)) 我该怎么做呢...

回答 1 投票 0

@include 或 @skip 指令应用于后解析器,而不是预解析器。最终到达后端而不是忽略客户端上的属性

考虑这个例子: 查询 myListQuery($someTest: 布尔值) { ID 价格 税率 昂贵的字段@skip(如果:$ someTest) } 这里,将执行graphQL查询;在其服务器解析器中,GQL

回答 1 投票 0

预处理器宏扩展(ISO/IEC 9899:1999 (E) §6.10.3.5 示例 3)

在C99标准中,第10.3.5节的示例3演示了f的宏扩展(修改): #定义 f(a) f(a) #定义 z z[0] f(z) 展开的结果是“f(z[0])”,其中...

回答 1 投票 0

可变宏无法编译

我有 2 个可变宏,其中一个可以正常编译,另一个则不能: #define ASSERT(x, ...)assert_log(x, __FILE__, __LINE__, __VA_ARGS__) #定义 TRACE (x, ...)

回答 1 投票 0

如何从标头中提取定义?

我想从头文件中提取一些定义,并将结果放入介子变量中。我当然可以用 run_command 来做到这一点,形成 cpp、sed 等 shell 命令。但我赢了...

回答 1 投票 0

GLAD #defines 隐藏在 #ifndef GL_VERSION_X_X 后面,使用 Visual Studio 2022

我已经开始学习引擎开发,并决定在我的项目中使用GLAD和SDL2。我遵循了各种教程,并成功地将 SDL2 和 GLAD 链接到我的项目。但我

回答 1 投票 0

是否有一个 C 预处理器可以替换连续的 else 和 ifdef 指令?

我有一段代码,看起来像这样, #ifdef A printf(“A”); #别的 #ifdef B printf(“B”); #万一 #万一 else 和 ifedef B 可以替换为 elif 定义 B as...

回答 1 投票 0

C #define with 0

我有以下代码: #define HARDW 671 // 硬件 3 位数字 #define FIRMW 013 // 固件 3 位数字 printf("FIRMW %d “,FIRMW); 结果是11...

回答 1 投票 0

gcc 预处理器 __DATE__ 和 __TIME__ 打印到终端

我在代码中使用; const charcompileDate[] = {__DATE__}; const char 编译时间[] = {__TIME__}; 但我只能在运行程序时看到这些值。可以查看日期并...

回答 1 投票 0

未跨预制作包含的预处理器定义

我有 3 个项目正在预制中: 项目A(静态库): 项目“A” 种类“StaticLib” 语言“C++” 静态运行时“开启” 文件 { ...

回答 1 投票 0

有没有办法自动将类似函数的宏“提升”为真正的内联函数?

我被分配去审查和更新一个旧的私人库,其中包含大量的 do { .. } while(0) 宏。 经过一番调查后,我决定用静态内联函数替换它们。之后...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.