C代码中的QA C警告消息[重复]

2024-01-10

我编写了以下一段代码并通过 QA C 进行了分析,但它显示了警告“x”具有外部链接,并且正在定义而没有任何先前的声明。请帮助我理解这一点。

Code:

#include <stdio.h>
int x;
void main()
{
}

该工具正确地警告您不要使用不良的编程习惯。我怀疑这是因为您设置了静态分析器来检查 MISRA-C 合规性。

首先,MISRA-C 不允许“全局”变量,MISRA-C:2012 规则 8.7:

在以下情况下,不应使用外部链接来定义函数和对象: 它们仅在翻译单元中被引用。

这意味着这个变量要么必须是static or extern.

前者是有道理的,后者几乎总是非常糟糕的编程实践(除了一些例外,例如某些const变量)。

现在,如果您打算拥有这个变量extern,那么还有另一条规则,这可能是错误的原因,MISRA-C:2012 规则 8.4:

当对象或函数 定义了外部链接。

这意味着为了遵守 MISRA,您需要有外部声明extern int x在同一翻译单元内可见。 MISRA 建议将其放入头文件中。

另请注意,像这样的不良代码已被标准标记为过时,并且可能无法在 C 的未来版本中工作,请参阅 C11 6.11.2:

6.11.2 标识符的链接

在文件范围内声明具有内部链接的标识符,而无需静态存储类 说明符是一个过时的功能。

即使它没有被 C 标记为过时的做法,你仍然应该always避免全局变量和extern,因为这是通向意大利面条式编程和意大利面条式紧耦合的道路。考虑完全不同的程序设计。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C代码中的QA C警告消息[重复] 的相关文章

  • Windows 10 Mobile (10.0.14393) 地理围栏后台任务 (LocationTrigger)

    自从10 0 14393 周年纪念更新 LocationTrigger似乎不起作用 我有 Windows Phone 8 1 应用程序 也适用于 UWP 应用程序 输出到的便携式库Windows Runtime Component图书馆 w
  • 具有不同大小结构的结构数组的 malloc()

    如果每个结构都包含一个大小不同的字符串数组 那么如何正确地 malloc 一个结构数组 因此每个结构可能有不同的大小 并且不可能 realloc 结构体数量 sizeof 结构体名称 after malloc 初始大小 sizeof 结构名
  • 在 VS2017 下使用 Conan 和 CMake 项目进行依赖管理

    我正在尝试使用 CMake 与 VS2017 集成为 C 设置一个开发环境 以便在 Linux x64 下进行编译 为了更好地管理依赖关系 我选择使用 Conan 但我对这个软件还很陌生 我想知道让 VS2017 识别项目依赖关系的最佳方法
  • 如何尝试/捕获所有异常

    我正在完成由其他人启动的 UWP 应用程序 该应用程序经常崩溃 我总是陷入困境应用程序 at if global System Diagnostics Debugger IsAttached global System Diagnostic
  • 将字符串转换为正确的 URI 格式?

    有没有简单的方法可以将电子邮件地址字符串转换为正确的 URI 格式 Input http mywebsite com validate email 3DE4ED727750215D957F8A1E4B117C38E7250C33 email
  • 带 If 的嵌套 For 循环的时间复杂度

    void f int n for int i 1 i lt n i if i int sqrt n 0 for int k 0 k lt pow i 3 k do something 我的思考过程 执行if语句的次数 sum i 1 to
  • 无法解析远程名称 - webclient

    我面临这个错误 The remote name could not be resolved russgates85 001 site1 smarterasp net 当我请求使用 Web 客户端读取 html 内容时 出现错误 下面是我的代
  • 从成员函数指针类型生成函子

    我正在尝试简化 通过make fn 预处理参数的函子的生成 通过wrap 对于 arity 的成员函数n 生成函子基本上可以工作 但到目前为止只能通过显式指定成员函数的参数类型来实现 现在我想从它处理的成员函数类型生成正确的函子 struc
  • libxml2 xmlChar * 到 std::wstring

    libxml2似乎将所有字符串存储在 UTF 8 中 如xmlChar xmlChar This is a basic byte in an UTF 8 encoded string It s unsigned allowing to pi
  • C++ 错误 - “成员初始值设定项表达式列表被视为复合表达式”

    我收到一个我不熟悉的 C 编译器错误 可能是一个非常愚蠢的错误 但我不能完全指出它 Error test cpp 27 error member initializer expression list treated as compound
  • 默认析构函数做了多少事情

    C 类中的默认析构函数是否会自动删除代码中未显式分配的成员 例如 class C public C int arr 100 int main void C myC new C delete myC return 0 删除 myC 会自动释放
  • C++11 动态线程池

    最近 我一直在尝试寻找一个用于线程并发任务的库 理想情况下 是一个在线程上调用函数的简单接口 任何时候都有 n 个线程 有些线程比其他线程完成得更快 并且到达的时间不同 首先我尝试了 Rx 它在 C 中非常棒 我还研究了 Blocks 和
  • 二叉树中的 BFS

    我正在尝试编写二叉树中广度优先搜索的代码 我已将所有数据存储在队列中 但我不知道如何访问所有节点并消耗它们的所有子节点 这是我的 C 代码 void breadthFirstSearch btree bt queue q if bt NUL
  • 从 R 到 C 处理列表并访问它

    我想使用从 R 获得的 C 列表 我意识到这个问题与此非常相似 使用 call 在 R 和 C 之间传递数据帧 https stackoverflow com questions 6658168 passing a data frame f
  • .NET 客户端中 Google 表格中的条件格式请求

    我知道如何在 Google Sheets API 中对值和其他格式进行批量电子表格更新请求 但条件格式似乎有所不同 我已正确设置请求 AddConditionalFormatRuleRequest formatRequest new Add
  • asp.net网格分页的SQL查询

    我在用iBatis and SQLServer 使用偏移量和限制进行分页查询的最佳方法是什么 也许我添加该列ROW NUMBER OVER ORDER BY Id AS RowNum 但这只会阻止简单查询的数据访问 在某些情况下 我使用选择
  • WPF。如何从另一个窗口隐藏/显示主窗口

    我有两个窗口 MainWindow 和 Login 显示登录的按钮位于主窗口 this Hide Login li new Login li Show 登录窗口上有一个检查密码的按钮 如果密码正确 我如何显示主窗口 将参数传递给 MainW
  • 使用 mingw32 在 Windows 上构建 glew 时“DllMainCRTStartup@12”的多个定义

    我关注了这个主题 使用 mingw 使建筑物在 Windows 上闪闪发光 https stackoverflow com questions 6005076 building glew on windows with mingw 6005
  • ASP.NET JQuery AJAX POST 返回数据,但在 401 响应内

    我的应用程序中有一个网页 需要调用我设置的 Web 服务来返回对象列表 这个调用是这样设置的 document ready function var response ajax type POST contentType applicati
  • 受限 AppDomain 中的代码访问安全异常

    Goal 我需要在权限非常有限的 AppDomain 中运行一些代码 它不应该访问任何花哨或不安全的内容 except对于我在其他地方定义的一些辅助方法 我做了什么 我正在创建一个具有所需基本权限的沙箱 AppDomain 并创建一个运行代

随机推荐

  • AngularJS 1.2 ng-repeat 页面加载动画

    令人惊叹的动画 http www yearofmoo com 2013 12 staggering animations in angularjs html太棒了 但如果没有用户交互 我就无法让它工作 有一个完整的正常 ng repeat
  • 如何以累积的方式将xts转换为较低频率

    我正在尝试以累积方式将 xts 时间序列数据转换为较低的周期性 例如 对 xts 包中的示例数据 sample matrix 使用 to weekly 我得到 library xts data sample matrix to weekly
  • C# 图遍历

    该算法在遍历图中的节点方面做得很好 Dictionary
  • Pytorch 已安装但在 ubuntu 18.04 上无法运行

    我正在尝试在 ubuntu 18 04 上通过 pip 安装 Pytorch 我有 python 3 6 我的笔记本电脑是 HP Pavilion 笔记本 15 安装似乎是正确的 因为我收到消息 成功安装收集的软件包 torch torch
  • WPF - UserControl 默认内容属性

    我正在创建一个 UserControl 但我不记得您用来装饰要充当默认内容属性的属性的属性名称 举一个具体的例子 假设我有一个名为 Title 的属性 我可以使用如下属性语法进行设置
  • php - 如何将变量增加 100 [重复]

    这个问题在这里已经有答案了 我正在查询一个 URL 通过 php 命令行 该 URL 一次仅返回 100 个值 因此 我该如何自动增加它 而不是手动增加 增加 100 呢 例如 URL 是 example com getdata php s
  • Selenium Webdriver:删除所有域上的 Cookie

    在 Selenium 中 您只能删除当前域上的 Cookie 但是是否可以导航到 Firefox 存储 Cookie 的文件并删除该文件或覆盖它 我一直在四处寻找 但找不到硒存储饼干的地方 可以指定一个用户目录然后进行操作
  • VS Code 未经验证的断点

    我正在尝试在 VS Code v 1 24 0 中调试 Node Express TypeScript 应用程序 但在调试过程中我的所有断点都显示为灰色 错误是 未验证断点 已设置断点但尚未绑定 我已经搜索过 但无法弄清楚我的配置有什么问题
  • 如何使用 REST 控制台对 http API 调用进行逆向工程

    我正在尝试使用 chrome 使用相同的 http POST 参数复制我在网站 即 Zoominfo com 上发出的请求休息控制台 https chrome google com webstore detail rest console
  • swift4:此客户端应用程序未批准回调 URL

    我正在使用 swift4 我想使用 twitter 登录应用程序 但是当我按下 使用 twitter 登录 按钮时 出现此错误 回调 URL 未批准用于此客户端应用程序 可以在您的应用程序设置中调整批准的回调 URL UserInfo NS
  • 使用Python获取DNS解析时间和响应时间

    PycURL 或任何其他 python 包是否提供以下信息 lookup 连接时间 我想获得与此 cURL 命令相同的信息 不使用子进程调用该命令 Command curl s w nLookup time t time namelooku
  • 我正在计算观看次数,但这会导致错误

    错误名称 page hits 用takes context True修饰 因此它必须有第一个参数 context 我制作了视图计数器 该函数必须处理人员对站点的输入并将其输出到模板 请提供现成的修复代码已经阅读了很多https docs d
  • 拒绝安装“模块”作为其自身的依赖项

    最近 我在玩 gulp 教程时遇到了这个错误 Refusing to install gulp as a dependency of itself 执行时 npm install save dev gulp 可能是什么问题 问题出在我自己的
  • Ruby:如何将变量设置为 0,或者如果已设置,则增加 1

    我知道 运算符 但认为它不会对我有帮助 尝试创建一个数组来计算对象数组中 类型 的数量 array each do c newarray c type newarray c type newarray c type 1 0 end 有没有更
  • 如何修复错误:命令“x86_64-linux-gnu-gcc”失败,退出状态为 1

    我正在尝试在 VirtualBox 机器上全新安装的 Linux 上安装 odoo 我已按原样输入此处找到的命令 Odoo 开发阅读文档 http odoo development readthedocs org en latest ins
  • 使用 jquery 窗口大小动态调整元素大小

    我已经查看了有关此主题的许多问题 但似乎无法找出我的代码有什么问题 任何帮助将不胜感激 window resize function var newwidth window innerWidth var newheight window i
  • 如何让 PHP 5.3.8 读取 .user.ini 文件?

    我有一台运行 Apache 2 2 21 和 PHP 5 3 8 的 Mac OS X 服务器 我想在每个目录的基础上设置一些 php ini 样式指令 根据PHP手册页 http www php net manual en configu
  • 如何在 Groovy 中在特定日期和时间创建新日期

    我想知道是否还有其他方法如何创建新的Date在特定日期和时间的 Groovy 中 而不是从中解析它String with Date parse方法 我可以得到完整的清单吗Date在 Groovy 中创作 您可以使用现有的 Java 方法来创
  • gstreamer playbin - 在 Windows 上设置 uri

    我正在尝试使用此站点上的 CLI 示例播放一些音频文件 http pygstdocs berlios de pygst tutorial playbin html http pygstdocs berlios de pygst tutori
  • C代码中的QA C警告消息[重复]

    这个问题在这里已经有答案了 我编写了以下一段代码并通过 QA C 进行了分析 但它显示了警告 x 具有外部链接 并且正在定义而没有任何先前的声明 请帮助我理解这一点 Code include