- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
<分区>
我们最近为一个项目启用了-Wall
。它在 GCC 为 4.7 或更高版本(或 Clang)时启用,因为我们可以使用 GCC diagnostic
管理提升警告的输出。我们希望通过源代码管理它们,不通过命令行参数。 (我们不想污染命令行,也不想让图书馆用户重新发现需要的东西)。
在 GCC 4.8 和 5.1 下,我们正在捕获在 GCC 诊断 block 中针对 -Wunused-variable
、-Wunused-value
、- 禁用的警告Wunused-function
和 -Wunknown-pragmas
。两个 GCC 都接受 -fopenmp
,并且都定义了 _OPENMP
来响应它,所以我很确定我们永远不会看到 -Wunknown-pragmas
响应 #prgam omp ...
(它被禁用,但它不是未知)。
g++ -DNDEBUG -g2 -O3 -Wall -march=native -pipe -c nbtheory.cpp
nbtheory.cpp:655:0: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
#pragma omp parallel
^
nbtheory.cpp:656:0: warning: ignoring #pragma omp sections [-Wunknown-pragmas]
#pragma omp sections
^
...
在这种特殊情况下,file nbtheroy.cpp
有以下守卫来帮助管理该警告(仅显示相关部分,但您可以看到 the GitHub link 中的所有内容):
// Defines GCC_DIAGNOSTIC_AWARE if GCC 4.7 or above.
#include <misc.h>
...
#if GCC_DIAGNOSTIC_AWARE
# pragma GCC diagnostic ignored "-Wunknown-pragmas"
#endif
...
Integer ModularRoot(const Integer &a, const Integer &dp, const Integer &dq,
const Integer &p, const Integer &q, const Integer &u)
{
Integer p2, q2;
#pragma omp parallel
#pragma omp sections
{
#pragma omp section
p2 = ModularExponentiation((a % p), dp, p);
#pragma omp section
q2 = ModularExponentiation((a % q), dq, q);
}
return CRT(p2, p, q2, q, u);
}
...
因为文件是 *.cpp
(它实际上是 翻译单元),我们不执行#pragma GCC diagnostic push
在开头,#pragma GCC diagnostic pop
在结尾。 (但是,我们对包含的头文件执行此操作)。 (我们也试过,但没用)。
这里是 GCC_DIAGNOSTIC_AWARE
(来自 misc.h
):
// Used to suppress some warnings in some header and implementation files.
// Some platforms, like CentOS and OpenBSD, use old compilers that don't understand -Wno-unknown-pragma.
#define GCC_DIAGNOSTIC_AWARE ((__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)) || defined(__clang__))
我知道守卫正在工作,因为在 block 中添加 #error
会导致错误。此外,注释掉守卫并调出 #pragma GCC diagnostic ignored "-Wunknown-pragmas"
也无济于事。最后,它在 Clang 下运行良好。
我还遇到了其他警告,例如 -Wunused-variable
、-Wunused-value
和 -Wunused-function
。我真的不想像建议的那样用潜在的重复项污染命令行。
当使用 -Wall
时,如何让 GCC pragma diagnostic
机制按预期工作以消除 GCC 下的警告?
相关的,如果你想复制它(它基于 GNUmakefile,不需要配置或自动工具):
git clone https://github.com/weidai11/cryptopp.git cryptopp-warn
cd cryptopp-warn
make
编辑:我们 checkin 了一个禁用 -Wall
(Clang 除外)的补丁。如果您想重现旧行为,则:
git clone https://github.com/weidai11/cryptopp.git cryptopp-warn
cd cryptopp-warn
export CXXFLAGS="-g2 -O3 -DNDEBUG -Wall"
make
是这样的代码: System.Diagnostics.StackFrame stackFrame = new System.Diagnostics.StackFrame(); System.Refle
我正在为 Azure 网站配置诊断和 IIS 日志。Azure 管理门户显示将应用程序诊断存储到 Azure 表存储的选项: 单击“管理表存储”时会弹出一个对话框以提供 Azure 表详细信息: Bl
我正在为 Azure 网站配置诊断和 IIS 日志。Azure 管理门户显示将应用程序诊断存储到 Azure 表存储的选项: 单击“管理表存储”时会弹出一个对话框以提供 Azure 表详细信息: Bl
我计划在我的一个项目中使用 PerformanceCounter。我只知道Microsoft.Diagnostics 。然而我偶然发现了一个相当新的库 Microsoft.Diagnostics.Ev
我正在尝试设置 .NET 跟踪。我可以通过 System.Diagnostics.Trace 进行基本跟踪,但由于复杂的原因,我必须通过 System.Diagnostics.TraceSource
前言 最新一直在忙着项目上的事情,很久没有写博客了,在这里对关注我的粉丝们说声抱歉,后面我可能更多的分享我们在微服务落地的过程中的一些经验。那么今天给大家讲一下在 .NET Core 2 中引入的
我不确定我是否理解 ETW 使用 System.Diagnostics.Tracing 和使用 System.Diagnostics.Trace 之间的主要区别。我知道使用它们我可以将事件转储到一些输
错误:未为<>和System.Diagnostics.Process类型定义运算符System.Diagnostics.Process。 功能错误 Public Shared Function Por
据我了解,System.Console 默认会写入 STDOUT,但是 System.Diagnostics.Trace 和 System.Diagnostics.Debug 呢? ?默认行为是什么,
启动应用程序时,我总是在“诊断工具”窗口中收到错误消息: The diagnostic tools failed unexpectedly. The Diagnostics Hub output in
我正在支持一个大型的旧应用程序。该代码使用 NLog 以及 Debug.WriteLine 和 Trace.WriteLine。我正在尝试将 Debug.WriteLine 和 Trace.Write
请求处理的正常时间范围是多少? 最佳答案 50 毫秒到 500 毫秒之间的任何时间都很好。 这当然只是服务器端。看看Yahoo's Best Practices for Speeding Up You
我已经克隆了 Typescript 存储库并正在查看代码,但它充满了这个错误: Cannot find name 'Diagnostics' 在看起来像这样的行上: Diagnostics._0_ex
我没有找到有关 Trace 和 TraceListener 如何跨多个域工作的信息。 Trace.WriteLine 的调用是跨多个域使用相同的实例,还是在每个域上创建自己的 Trace 类实例? 换
每次我在 Perl 中输入 use diagnostics 时,我都会收到一条错误消息说 couldn't find diagnostics data in /file name.etc... 有人可
为了解决通过不发送电子邮件的smtp服务器发送电子邮件的问题,建议我启用使用System.Diagnosis.TextWriterTraceListener进行日志记录以跟踪与smtp服务器的通信以跟
使用 perl 我几乎总是使用: use strict; use diagnostics; 我建议“使用诊断”而不是 use warnings; here我收到了一些负面反馈。所以,现在我在想: us
我正在研究使用log4net和System.Diagnostics.Trace进行日志记录之间的差异,并且我对观察到的性能差异感到好奇。 我创建了一个测试应用程序,以比较两种情况下这两种日志记录方法的
如何在PowerShell中将Y传递到由System.Diagnostic.Process启动的进程中? function Start-NewPlinkProcess( [string
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
我是一名优秀的程序员,十分优秀!