- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 VS 2008 来编译一些 C 代码。我将项目配置为使用没有任何语言扩展的 ANSI C 标准。我还将警告级别从 3 提高到 4。
在构建项目时,我总是收到此警告:
c:\program files\microsoft visual studio 9.0\vc\include\sal.h(108) : warning C4001: nonstandard extension 'single line comment' was used
我理解这个警告,但我该如何摆脱它呢?我没有在任何地方包含 sal.h。此外,在创建解决方案时,我选择了 Win32 控制台应用程序并选中了“空项目”复选框。
编辑:我按照建议启用了/showIncludes 开关,但它并没有真正帮助,因为它没有显示包含什么。似乎 VS 本身包含了一堆东西:
Compiling...
go.c
Note: including file: c:\projects\c\kr\kr\e.01.01.h
Note: including file: c:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdio.h
Note: including file: c:\Program Files\Microsoft Visual Studio 9.0\VC\include\crtdefs.h
Note: including file: c:\Program Files\Microsoft Visual Studio 9.0\VC\include\sal.h
c:\program files\microsoft visual studio 9.0\vc\include\sal.h(108) : warning C4001: nonstandard extension 'single line comment' was used
Note: including file: c:\Program Files\Microsoft Visual Studio 9.0\VC\include\crtassem.h
Note: including file: c:\Program Files\Microsoft Visual Studio 9.0\VC\include\vadefs.h
Note: including file: c:\Program Files\Microsoft Visual Studio 9.0\VC\include\swprintf.inl
Linking...
我是否遗漏了一些编译器开关?
最佳答案
不幸的是,你有点卡住了——微软的运行时头文件似乎不仅仅在 sal.h
中使用单行注释(例如,stdlib.h
使用它们,也是),因此您可以:
#include
指令以在它们被包含时禁用警告并在之后重新启用它们或以上的某种组合。
选项 #1 可能会让您轻松进行:
#pragma warning( push)
#pragma warning( disable : 4001)
#include <stdlib.h>
/* other runtime includes */
#pragma warning( pop)
但如果运行时 header 中有其他非 ANSI 内容,我一点也不会感到惊讶。看起来他们已经尝试在给出选项时保持 ANSI 干净,但我怀疑它没有经过严格测试(特别是在非默认警告级别)。
关于c - 不需要的 sal.h 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1600596/
如题中所问: What is the purpose of SAL (Source Annotation Language) and what is the difference between SA
是否可以使用 SQL 显示员工详细信息,如下所示? Emp_id, Emp_name, Emp_Sal, Sum(Emp_Sal) 注意:这里的Sum(Emp_Sal)是所有员工的总和。 最佳答案 A
我一直在阅读 SAL而且我不清楚指针类型的注释是否适用于引用或它指向的值。例如,如果我有: void f(_In_ type* t); _In_ 表示“该参数必须在预状态有效且不会被修改。”它应用在这
我想列出所有收入超过平均工资的员工。我对此有点迷茫。我需要将所有薪水加起来然后取平均,只显示收入高于平均水平的薪水。在这方面我需要很多帮助。 我的查询不起作用 SQL> select empno,
我正在将一些代码从 Visual Studio 移植到 Mingw gcc。我注意到在该代码中有很多注释,例如 __field_ecount_opt AM_NOVTABLE _out_bcount_p
这是 MSDN (http://msdn.microsoft.com/en-us/library/hh916383.aspx) 上给出的一个示例,它试图解释 SAL 注释可以帮助找到常见的差一错误。
两张表一样 表1 +----+-------+-----+ | id | sname | sal | +----+-------+-----+ | 1 | X | 100 | | 2 |
虽然我当然明白buffer annotations的用途,但我看不出是什么类型的错误__callback检测。 有什么想法,例子吗? 最佳答案 因为如果您忘记了返回 void* 并且不是回调的东西的括
所以我已经深入研究了 C++ 的源代码注释,但发现有很多方法可以通罗马,可以这么说。 例子: __in _In_ [Pre(FormatString(Style="printf")] LPCSTR f
我一直在尝试在 win7 上用 minw32 编译一个程序。每次我尝试编译它时,都会收到有关 sal.h 丢失的错误。我已经下载了 Visual Studio c++ 2010 (Express) 并
我正在尝试添加 SAL到我的代码...我根据 msdn 工作并在 msdn 示例中发现错误,不知道如何处理它。 此处稍微更改了示例“指向调用者的指针输出(示例:Outptr 注释)”,来自 Under
我正在尝试为我的项目使用 Micosoft 的 SAL 注释,但是我收到以下警告,我不知道为什么。 例如,我创建了一个新的 C++ 控制台应用程序,并具有以下代码: #include class W
我有一个可变函数: print_n_integers(7, 1, 2, 3, 4, 5, 6, 7); int print_n_integers( unsigned int count, ... )
我注意到这样的陈述: __in HMODULE Module, __in PSTR ImportedModuleName, __in PSTR ImportedProcName, __
我有一些用 Doxygen 记录的类。此外,它们使用 Microsoft 的源代码注释语言 (SAL) 进行注释以支持静态代码分析。 //! The majestic class. class Foo
我可以在多大程度上依赖 SAL?我需要做什么吗 NSTATUS my_func(_In_ int *p) { if (NULL == p) { return STATUS_IN
有什么方法可以利用微软的 SAL,例如通过保留此信息的 C 解析器?还是由 Microsoft 制作,仅供 Microsoft 内部使用? 它对许多任务都非常有用,例如为其他语言创建 C 库绑定(bi
我正在尝试使用 VS 2008 来编译一些 C 代码。我将项目配置为使用没有任何语言扩展的 ANSI C 标准。我还将警告级别从 3 提高到 4。 在构建项目时,我总是收到此警告: c:\progra
我是 hive 环境的新手,我想找到那些当推销员并且薪水比所有职员最高薪水还高的员工。我可以用SQL编写查询,但不能用 hive 编写。 在这里,您可以找到我刚使用的emp表。 最佳答案 select
我正在努力将 DirectSound 实现到一个程序中,但它需要 dsound.h,而 dsound.h 需要 sal.h,而且无论出于何种原因,我都无法让 g++ 识别我拥有 sal.h,它位于路径
我是一名优秀的程序员,十分优秀!