问题标签 [c-preprocessor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - __FILE__、__LINE__ 和 __FUNCTION__ 在 C++ 中的用法
假设您的 C++ 编译器支持它们,是否有任何特别的理由不使用__FILE__
,__LINE__
以及__FUNCTION__
用于日志记录和调试目的?
我主要关心的是向用户提供误导性数据——例如,报告错误的行号或函数作为优化的结果——或者因此导致性能下降。
__FILE__
基本上,我可以信任__LINE__
并始终__FUNCTION__
做正确的事吗?
c# - 是否有与 /unsafe 标志对应的“预处理器”符号?
我正在处理WriteableBitmap
C# 中的一个。我目前正在使用不安全的代码块通过WriteableBitmap.BackBuffer
. 但是,我宁愿不依赖于该/unsafe
选项,因此我正在考虑改用该选项WriteableBitmap.WritePixels
。
是否有某种方法可以在“不安全”版本中进行有条件地编译,以便在使用 /unsafe 编译选项时可以使用它,而无需手动集成到我的项目文件中?
简而言之,我正在寻找以下内容:
运行时检测也很好;但这意味着我总是需要用 编译, /unsafe
这意味着库代码需要更新项目文件,这不太方便。
基本上,我想在重要的时候保留快速版本,但有一个合理的版本,无论如何都可以工作。
c# - 如何在一个项目中创建不同的 DLL?
有个问题不知道能不能解决。我在 Visual Studio 2005 上有一个 C# 项目,我想根据预处理器常量创建不同的 DLL 名称。我现在拥有的是预处理器常量、两个 snk 文件和两个程序集的 guid。我还创建了两个配置(调试和调试预处理器),它们使用适当的 snk 和 guid 完美编译。
现在,我必须将这两个程序集放入 GAC。添加第一个程序集没有问题,但第二个程序集没有。
如何从一个 Visual Studio 项目创建两个或多个不同的程序集?
我可能忘记在“AssemblyInfo.cs”中添加一个新行来根据预处理器常量更改 DLL 名称?
c++ - 替换 C++ 运算符 new 的宏
是否可以创建宏来替换所有形式的operator new
重载,包括额外的 args...say__FILE__
和__LINE__
?
问题似乎是operator new
可以使用或不使用括号进行编码,因此:
类对象宏:
将替换如下声明:
/li>和类似函数的宏:
将替换如下声明:
/li>
不幸的是,尝试用相同的标识符声明两个宏是错误的,即使它们是不同的类型,所以以下失败:
由于我使用的是 g++,我希望使用他们的可变参数宏语法会取得成功,但不幸的是没有。以下:
只匹配new(xyx) A()
,不匹配new A()
。
我知道有文章写过为什么这是不可能的,但我觉得我已经很接近了,一定有办法。有什么明显的我失踪了吗?
c++ - 错误记录 C++ 预处理器宏 __LINE__、__FUNCTION__
我试图将一个简单的错误记录合并到我现有的应用程序中,目前它报告错误只是使用cout
所以我希望使用操作员保持类似的界面<<
。但是我希望它记录发生错误的行和函数,但我不想__LINE__, __FUNCTION__
每次需要记录时都必须输入。有谁知道我可以用来允许__LINE__
宏在另一个函数中使用的技巧,而不是报告调用行?希望这是有道理的。
而不是每次都这样
我只想能够做到:
c - 在 C 中说“#define FOO FOO”有什么意义?
我遇到了一些C代码,其中作者到处使用以下成语:
这样做有什么意义?typedef 还不够吗?对于一些不稳定的C编译器来说,这是一种解决方法吗?
c# - C# 中的预处理器指令
我似乎在使用 C# 中的预处理器指令时遇到了问题。我创建了一个 Visual Studio 2008 C# win forms 应用程序。我添加这个:
当我在调试中运行时,我看到了预期的“调试模式”。但是,当我切换到发布、编译和运行 .exe 时,我仍然看到“处于调试模式”文本。在我的项目属性中,我DEBUG
检查了定义常量。我什至得到了上面代码的正确颜色编码语法。是什么赋予了?
c++ - #include 指令:相对于哪里?
我查看了The C++ Programming Language试图找到这个问题的答案。当我#include "my_dir/my_header.hpp"
在标题中时,它在哪里寻找这个文件?它是相对于标题,相对于包含它的源文件还是其他什么?
c++ - 我可以对宏使用哪些技巧?
在我们的遗留代码以及现代代码中,我们使用宏来执行漂亮的解决方案,如代码生成等。我们同时使用#
和##
运算符。
我很好奇其他开发人员如何使用宏来做很酷的事情,如果他们使用它们的话。
c++ - 宏和 Visual C++
我试图更好地了解宏在现代C++ 和 Visual C++ 中的位置(如果有的话),还参考了 Windows 编程库:宏在这些情况下解决了什么问题(如果有)没有就无法解决使用它们?
我记得从这篇博客文章中读到了谷歌浏览器对宏的 WTL 使用(除其他外),它们也在 MFC 中使用 - 这是该博客文章中的一个宏示例,我想用大量的解释如果可能,请详细说明: