问题标签 [pragma]

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.

0 投票
8 回答
8487 浏览

c++ - 你用#pragma 编写了哪些代码,你觉得有用?

我从来不明白#pragma once什么时候#ifndef #define #endif总是有效的需要。

我已经看到了#pragma comment与其他文件链接的用法,但是使用 IDE 设置编译器设置更容易。

还有哪些其他#pragma有用但不广为人知的用法?

编辑:

只是在#pragma 指令列表之后。也许我应该重新表述一下这个问题:

你用什么代码写的,#pragma你觉得有用?

.

答案一目了然:

感谢所有回答和/或评论的人。以下是我认为有用的一些输入的摘要:

  • Jason 建议使用#pragma onceor#ifndef #define #endif将允许在大型系统上更快地编译。史蒂夫加入并支持这一点。
  • 280Z28 领先并提到它#pragma once是 MSVC 的首选,而 GCC 编译器针对#ifndef #define #endif. 因此,一个人应该使用其中之一,而不是两者。
  • Jason 还提到#pragma pack了二进制兼容性,而 Clifford 反对这一点,因为可能存在可移植性和字节序问题。Evan 提供了一个示例代码,Dennis 告知大多数编译器将强制填充对齐。
  • sblom 建议使用#pragma warning来隔离真正的问题,并禁用已经审查过的警告。
  • Evan 建议#pragma comment(lib, header)在项目之间轻松移植,而无需再次重新设置 IDE。当然,这不是太便携。
  • sbi#pragma message为 VC 用户提供了一个绝妙的技巧来输出带有行号信息的消息。James 更进一步,允许errorwarning匹配 MSVC 的消息,并将适当地显示,例如错误列表。
  • Chris 提供#pragma region了能够在 MSVC 中使用自定义消息折叠代码。

哇,等一下,如果我想发布关于使用#pragmas 的帖子,除非必要,该怎么办?

  • 从另一个角度看克利福贴一下不要#pragma。荣誉。

如果 SOers 有发布答案的冲动,我将在此列表中添加更多内容。感谢大家!

0 投票
1 回答
1643 浏览

c - 各种编译器中的编译指示 swp、ivdep、预取支持

在良好的 Altix 手册(altix_single_cpu_optimization http://wwwuser.gwdg.de/~parallel/parallelrechner/altix_documentation/altix_single_cpu_optimization.pdf)中,我找到了这个用于优化编译器的 pragmas-hints 列表

哪些编译器支持这些编译指示?什么实现了链接优化(软件流水线是低 ipc 和低注册数处理器的相当困难的优化之一)?

0 投票
5 回答
5285 浏览

c# - 我可以以编程方式启用/禁用异常中断吗?

我希望能够在调试时打破异常......就像在 Visual Studio 2008 的菜单调试/异常对话框中一样,除了我的程序在我想要调试的位之前有许多有效的异常。

因此,不是每次都使用对话框手动启用和禁用它,而是可以使用#pragma 或其他方法自动执行它,这样它只发生在特定的代码段中?

0 投票
3 回答
14502 浏览

visual-studio - 人们如何处理警告 C4793: 'some_function' : 编译为本机的函数?

"warning C4793: 'anonymous namespace'::CV_XADD' : function compiled as native"如果我的 C++ 项目使用 CLR 支持编译,我正在使用 OpenCV 库及其头文件之一 cxoperations.hpp 生成。我可以通过包围 OpenCV 标头来防止警告,如下所示:

但是实际使用 OpenCV 的项目并没有在 CLR 支持下编译,它是一个原生 C++ 静态库。确实具有 CLR 支持并在没有 pragma 语句的情况下生成此警告的项目仅使用此静态库。所以我对这个警告的创建有点惊讶,特别是考虑到整个静态库不是用 CLR 支持编译的,但只有这个头文件会导致问题。

因此,这个解决方案对我来说似乎不是最理想的。这是您处理此警告的方式,还是您可以推荐一个更好的做法?

0 投票
4 回答
12746 浏览

oracle - 在 Oracle 包体中使用 Pragma

我想在其中创建一个 Oracle 包和两个函数:一个公共函数 ( function_public) 和一个私有函数 ( function_private)。公共函数在 sql 语句中使用私有函数。

没有编译指示,代码无法编译 ( PLS-00231: function 'FUNCTION_PRIVATE' may not be used in SQL)

如果我将WNDS, WNPSpragma 添加到function_private. 在我看来 pragma 只能在包声明中使用,不能在包体中使用,所以我也必须function_private在包中声明:

这个解决方案也让我function_private公开。是否有解决方案将编译指示添加到只能在包主体中找到的函数?

更新:用一个工作(简化)示例替换了伪代码。

UPDATE2:Rob van Wijk 建议的代码中的错误修复。

0 投票
1 回答
10394 浏览

sqlite - 何时在 sqlite 上使用编译指示?

何时使用编译指示?

第一次创建数据库还是在每次连接数据库时创建数据库?

0 投票
4 回答
46896 浏览

c-preprocessor - 定义宏中的编译指示

有没有办法将 pragma 语句与其他语句一起嵌入到宏中?

我正在尝试实现以下目标:

如果存在提升解决方案(除了波浪),我可以接受。

0 投票
7 回答
24639 浏览

php - 什么可能会在我的响应标头中添加“Pragma:no-cache”?(阿帕奇,PHP)

我有一个网站,我继承了它的维护,这是一个大毛茸茸的烂摊子。
我正在做的一件事是提高性能。除其他外,我正在向Expires图像添加标题。

现在,有一些图像是通过 PHP 文件提供的,我注意到它们确实有Expires标题,但它们也每次都被加载。

查看响应标头,我看到了这一点:

这显然解释了这个问题。

现在,我查看了整个代码库,但它在任何地方都没有说“pragma”。.htaccess 似乎也没有任何相关内容。

有什么想法可以设置那些“pragma”(和“cache-control”)标头,我该如何避免呢?

0 投票
1 回答
2061 浏览

push - 什么禁用了#pragma pack(push)?

我有一个使用 #pragma pack(push,8) 的代码,但它似乎没有以某种方式生效,但我无法弄清楚是什么导致了这个问题。

例如,看下面的代码。

这将返回“数据大小:24”,但我在由 Visual Studio 管理的其他应用程序中使用相同的代码,我得到“数据大小:20”。

所以我假设它与某些设置有关,但无法弄清楚。如果有人能给我一些提示,我将不胜感激。谢谢。

0 投票
3 回答
1812 浏览

gcc - 使用 Pragma 在 GCC 中删除标志

我想在我的项目中删除一个实用文件的编译器标志。如何使用#pragma