c-preprocessor相关内容

Visual C++2010中的预处理器指令缩进

我经常发现自己在希望像其余代码一样缩进预处理器指令的情况下(例如#if缩进,如if)。它seems legal,它是common sense that it's sometimes a good thing,但Visual不会让它变得容易。 有没有办法防止每次我无意中按#时,Visual C++2010编辑器都会将代码粘在左边?并且不使用自动缩进(CTRL+K、CTRL+F)中断预处理器指令的缩 ..

使用预处理器检查表达式是否为左值

是否有使用C预处理器检查表达式是否为lvalue(meaning I can do &expression)的宏? 示例:如果有一些int a;,我调用IS_LVALUE(a),它的取值应该为1,而IS_LVALUE(5)应该取值为0,这样我就可以#if IS_LVALUE(...) == 1 推荐答案 否 因为C预处理器不知道什么是左值,也不知道关于这一点的任何其他C构造 ..
发布时间:2022-03-26 17:59:44 其他开发

C++,使用#if true条件指令

使用#if TRUE这样的语句时,我应该预期会发生什么情况?如果您能给我一个解释,我们将不胜感激!我了解#if 1是如何工作的,但是它在我的代码中给出的结果与使用#if TRUE完全不同。我理解#if是一个条件指令,这意味着什么;我只是不理解TRUE(或FALSE)部分。似乎以这种方式使用它永远不会执行语句后面的代码。下面是一个示例: #if TRUE cout ..
发布时间:2022-03-26 17:54:24 C/C++开发

我应该在标题中使用#include 吗?

是否需要#include某个文件,如果在头文件(*.h)中,使用该文件中定义的类型? 例如,如果我使用 GLib 并希望在头文件中定义的结构中使用 gchar 基本类型,是否有必要执行 #include ,知道我的 *.c 文件中已经有它了吗? 如果是,我是否还必须将其放在 #ifndef 和 #define 之间或 #define 之后? 解决方案 NASA ..
发布时间:2022-01-31 09:55:35 其他开发

#include <filename> 和有什么区别?和#include“文件名"?

在C和C++编程语言中,include语句中使用尖括号和使用引号有什么区别,如下? #include #include "文件名" 解决方案 实际上,区别在于预处理器搜索包含文件的位置. 对于#include ,预处理器以与实现相关的方式搜索,通常在编译器/IDE 预先指定的搜索目录中.该方法通常用于包含标准库头文件. 对于#includ ..
发布时间:2022-01-30 15:52:00 C/C++开发

C 编程:预处理器,包含宏中的文件

如果我能找到一种方法来做类似的事情,我可以在我的应用程序中删减数百行代码,并显着提高可维护性.有人有什么想法吗? #include int main(){#define include_all_files(根)\#include #root "1.h" \#include #root "2.h" \#include #root "3.h" \#include #root "4. ..
发布时间:2022-01-25 19:23:57 其他开发

预处理后如何查看包含文件的实际顺序?

我有一个 .cpp 文件,其中包含一些头文件.这些头文件也可能包括其他头文件.包含保护措施可防止两次包含同一文件. 知道每个文件只包含一次.有没有办法计算出所有标题的最终顺序? 我尝试使用 gcc -E 来获取预处理器输出,但生成的代码似乎无法用于提取我想要的信息.有人可以帮忙吗? 编辑 我问的原因是因为我需要以正确的顺序将我的头文件包含在 SWIG 接口文件中,以避免生成 ..
发布时间:2022-01-25 19:07:06 C/C++开发

在编译时将文件读入字符串

我想在一个文件中写一些东西(我们称之为foo.cpp)并将它作为一个字符串包含在我的程序中在编译时,类似于 #include 的方式. 现在我正在使用这个 C 预处理器 #define: #define toString(src) #src 将一堆代码转换为字符串,如本例所示: const char* str = toString(诠释 x;无效的主要(){}); 如果您愿意,可以在 ..
发布时间:2022-01-25 18:50:25 C/C++开发

#包括任何地方

#include 是仅用于标头,还是只是机械的“在此处注入此代码",可以在代码中的任何位置使用? 如果我在 cpp 函数的中间使用它来从单一来源“注入"代码会怎样?这会奏效还是编译器会为此大喊大叫? 解决方案 它是一个机械的在此处注入代码设备.如果您愿意,可以包含一个包含歌德浮士德的文本文件.你可以把它放在任何地方,甚至在函数的中间(当然,#include 需要换行!) ..
发布时间:2022-01-25 18:48:16 C/C++开发

为什么要在项目中使用#include_next?

引用 iOS 关于 Wrapper Headers 的文档: #include_next 不区分 和“文件"包含,也不会检查您指定的文件是否相同名称为当前文件.它只是查找名为的文件,开始搜索路径中的目录位于当前目录之后文件已找到. 使用 `#include_next' 会导致极大的混乱.我们推荐只有在没有其他选择时才使用它.特别是,它不应在属于特定程序的标头中使用;它应该只 ..
发布时间:2022-01-25 18:27:46 其他开发

什么时候可以在#include 指令中省略文件扩展名?

我在玩 gmock 并注意到它包含这一行: #include 我会期待 tuple.h. 什么时候可以排除扩展,它是否赋予指令不同的含义? 解决方案 C++ 标准头文件没有“.h"后缀.我相信原因是该标准会破坏许多不同的标准前实现.因此,标准委员会没有要求供应商将其现有的“iostream.h"(例如)标头更改为符合标准(这将破坏其现有用户的代码),而是决定他们将 ..
发布时间:2022-01-25 18:23:21 C/C++开发

可以使用 C 预处理器来判断文件是否存在吗?

我有一个非常大的代码库(阅读:数千个模块),其中的代码在许多项目中共享,这些项目都运行在具有不同 C++ 编译器的不同操作系统上.不用说,维护构建过程可能是一件苦差事. 如果文件在当前文件夹.有谁知道实现这一目标的方法吗? 目前,我们在共享文件中的 #include 周围使用 #ifdef,并使用第二个项目特定文件 #defines#include 存在于项目中.这有效,但它很丑.人们 ..
发布时间:2022-01-25 18:22:42 C/C++开发

什么是记录在 C(或可能是 C++)中使用 X-Macros 模式的良好参考?

“X-Macros" 在此C 预处理器上的维基百科条目中给出: X-Macro 是一个头文件(通常使用“.def"扩展名而不是传统的“.h")包含一个类似的宏调用列表(可以称为“组件宏"). 关于如何使用这种强大的技术,有哪些好的信息来源?是否有知名的开源库使用这种方法? 解决方案 我在代码中经常使用 X Macros().该值来自仅将新数据添加到“X列表"而不修改任何其他代码 ..
发布时间:2022-01-25 18:20:30 其他开发