预计会看到“字符数组的初始化字符串太长”警告[重复]

2024-02-20

我希望在使用 gcc 的以下程序中看到两个变量的“字符数组的初始化字符串太长”警告。

Program:

int main()
{
   char str1[4]="1234";
   char str2[3]="1234";

   (void)str1; // Remove unused variable warning.
   (void)str2; // Remove unused variable warning.
   return 0;
}

但是,我只收到警告str2.

Since

char str1[4]="1234";

相当于

char str1[4]= {'1', '2', '3', '4', '\0'};

我们不应该得到同样的警告吗str1 also?

这是 gcc 的缺陷吗?

编译命令:

gcc -Wall -std=c99 soc.c -o soc

gcc版本是4.8.4。

Update

刚刚了解到

char str1[4]="1234";

is not相当于

char str1[4]= {'1', '2', '3', '4', '\0'};

Update 2

char str1[4]="1234";

在 C++11 中格式错误(第 8.5.2/2 节)。我不认为 C99 和 C++11 会区别对待它们。


C 标准第 6.7.9 节内容如下:

  1. 字符类型的数组可以通过字符串来初始化 文字或 UTF -8 字符串文字,可以选择用大括号括起来。 字符串文字的连续字节 (包括终止 如果有空间或数组大小未知,则为空字符) 初始化数组的元素。

...

  1. 实施例8

    声明

    char s[] = "abc", t[3] = "abc";
    

    定义“普通”字符数组对象 s 和 t,其元素用字符串文字初始化。该声明与

    char s[] = { 'a', 'b', 'c', '\0' }, t[] = { 'a', 'b', 'c' };
    

(强调我的)。

也就是说,如果终止空字符不适合固定的已知大小数组,则不会添加它。

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

预计会看到“字符数组的初始化字符串太长”警告[重复] 的相关文章

  • 在C语言中使用“void”

    我很困惑为什么我们需要通过void转换为 C 函数 int f void return 0 versus int f return 0 什么是正确的做法以及为什么 In C int f 是一种老式的声明 它说f需要固定但未指定数量和类型的参
  • 查找哪些页面不再与写入时复制共享

    假设我在 Linux 中有一个进程 我从中fork 另一个相同的过程 后forking 因为原始进程将开始写入内存 Linux写时复制机制将为进程提供与分叉进程使用的不同的唯一物理内存页 在执行的某个时刻 我如何知道原始进程的哪些页面已被写
  • 迭代变量并查找特定类型实例的技术

    我想迭代进程中内存中的变量 通过插件动态加载 并查找特定类型的实例 以前我可以找到特定类型 或内存中的所有类型 我可以创建类型的实例 我可以获取作为不同类型的字段包含的实例 但我无论如何都不知道只是 搜索 特定类型的实例 一种方法是使用 W
  • 为什么我不能用 `= delete;` 声明纯虚函数?

    Intro 纯虚函数使用通用语法声明 virtual f 0 然而 自 c 11 以来 有一种方法可以显式地传达non existence 特殊 成员函数的 Mystruct delete eg default constructor Q
  • 如何在 Android NDK 中创建新的 NativeWindow 而无需 Android 操作系统源代码?

    我想编译一个 Android OpenGL 控制台应用程序 您可以直接从控制台启动 Android x86 运行 或者从 Android x86 GUI 内的 Android 终端应用程序运行 这个帖子 如何在 Android NDK 中创
  • C++:重写已弃用的虚拟方法时出现弃用警告

    我有一个纯虚拟类 它有一个纯虚拟方法 应该是const 但不幸的是不是 该接口位于库中 并且该类由单独项目中的其他几个类继承 我正在尝试使用这个方法const不会破坏兼容性 至少在一段时间内 但我找不到在非常量方法重载时产生警告的方法 以下
  • Clang 编译器 (x86):80 位长双精度

    我正在尝试在 x86 Windows 平台上使用本机 80 位长双精度 海湾合作委员会选项 mlong double 80 https gcc gnu org onlinedocs gcc x86 Options html似乎不适用于 cl
  • 对齐 GridView 中的行值

    我需要在 asp net 3 5 中右对齐 gridview 列中的值 我怎样才能做到这一点
  • IronPython:没有名为 json 的模块

    我安装了 IronPython 我的 python 文件如下所示 import sys print sys version import json 运行它的代码 var p Python CreateEngine var scope p C
  • 即使手动设置显示环境变量后,WSL Ubuntu 也会显示“错误:无法打开显示”

    我在 WSL Ubuntu 上使用 g 我使用 git 克隆了 GLFW 存储库 使用了ccmake命令配置并生成二进制文件 然后使用make在 build 目录中最终创建 a文件 我安装了所有OpenGL相关的库 usr ld 我不记得我
  • Qt 创建布局并动态添加小部件到布局

    我正在尝试在 MainWindow 类中动态创建布局 我有四个框架 它们是用网格布局对象放置的 每个框架都包含一个自定义的 ClockWidget 我希望 ClockWidget 对象在调整主窗口大小时相应地调整大小 因此我需要将它们添加到
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • 基于xsd模式生成xml(使用.NET)

    我想根据我的 xsd 架构 cap xsd 生成 xml 文件 我找到了这篇文章并按照说明进行操作 使用 XSD 文件生成 XML 文件 https stackoverflow com questions 6530424 generatin
  • 如何在c#中的内部类中访问外部类的变量[重复]

    这个问题在这里已经有答案了 我有两个类 我需要声明两个类共有的变量 如果是嵌套类 我需要访问内部类中的外部类变量 请给我一个更好的方法来在 C 中做到这一点 示例代码 Class A int a Class B Need to access
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 有没有一种简单的方法可以让 Visual Studio 2015 使用特定的 ToolsVersion?

    使用特定版本构建项目或解决方案时msbuild我可以使用以下命令选择早期的 net 工具链 toolsversion or tv switch C Program Files x86 MSBuild 14 0 bin msbuild tv
  • strcmp 给出分段错误[重复]

    这个问题在这里已经有答案了 这是我的代码给出分段错误 include
  • 运算符“==”不能应用于“int”和“string”类型的操作数

    我正在编写一个程序 我想到了一个数字 然后计算机猜测了它 我一边尝试一边测试它 但我不断收到不应该出现的错误 错误是主题标题 我使用 Int Parse 来转换我的字符串 但我不知道为什么会收到错误 我知道它说 不能与整数一起使用 但我在网
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没
  • 带重定向标准流的 C# + telnet 进程立即退出

    我正在尝试用 C 做一个 脚本化 telnet 项目 有点类似于Tcl期望 http expect nist gov 我需要为其启动 telnet 进程并重定向 和处理 其 stdin stdout 流 问题是 生成的 telnet 进程在

随机推荐

  • Flask facebook canvas 应用程序 - 不允许 405 方法

    我对 Web 开发和 Python 相当陌生 试图使用 python Flask 制作一个 facebook 应用程序 在本教程中找到了一些我用来入门的代码 http ryaneshea com facebook authenticatio
  • Scala 案例类参数从数组实例化

    考虑一个可能有大量成员的案例类 为了说明这种情况 假设两个参数 如 case class C s1 String s2 String 因此假设一个数组的大小至少有那么多参数 val a Array a1 a2 Then scala gt C
  • dplyr::mutate 中的非标准评估

    理论上这应该可行 因为我已经阅读了 NSE 上的 tidyverse 指南 但它给我带来了一个错误 如本示例底部所示 为什么是这样 我了解如何对对象进行简单的准引用 但我不了解如何评估两个准引用对象的一部分 有人能帮忙吗 tmp lt st
  • Python 3 - 计算两个列表中的匹配项(包括重复项)

    首先 我是编程和Python的新手 我看过这里但找不到解决方案 如果这是一个愚蠢的问题 请原谅我 我有两个列表 我试图确定第二个列表中的项目在第一个列表中出现的次数 我有以下解决方案 list1 black red yellow list2
  • 在 Android 浏览器中,在文本后使用插入符号聚焦文本区域

    我目前正在编写一个简单的网络应用程序来在 Android 浏览器中查看推文 我使用此代码将插入符号聚焦在当前文本之后 var oldContent document tweetBox tweet value document tweetBo
  • 如何在 Mac 上构建 gcc?

    我想在 Mac 上构建最新版本的 gcc 我有最新的 xcode 但我正在寻找更新版本中的一些 c 0x 功能 lambda 函数等 有没有关于这样做的好的分步教程 你应该看看自制项目 https brew sh Homebrew 允许您执
  • 我如何声明实现类的 java 接口字段应该完善该字段

    如何声明实现类的 java 接口字段应该细化该字段 例如 public interface IWorkflow public static final String EXAMPLE interface field public void r
  • 简单问题:Java 中的 ValueChanged 事件

    Java 中是否存在值更改时触发的事件 就像这个例子一样 public class Example public String var1 Something public Int var2 4 If var1 or var2无论事件发生什么
  • 持续集成中的 Java 分析

    有没有像 Jenkins 这样与 CI 服务器集成的 Java 分析工具 我不知道这样的东西是否存在 但是如果有某种测试框架能够产生像 YourKit Profiler 的快照这样的结果 那就太好了 这些将由 CI 服务器调用 并将结果与
  • C# 中的命名锁集合?

    我有多个线程将数据写入公共源 并且我希望两个线程当且仅当它们接触同一数据时才相互阻塞 如果有一种方法可以专门锁定任意键 那就太好了 string id GetNextId AquireLock id try DoDangerousThing
  • 您可以启动一个 C# 应用程序吗,这样它就不需要 .NET

    我在用视窗 10我确实想在 Windows 7 计算机上运行我的应用程序 但不允许我下载 NET Framework 有没有一种方法可以让我不需要在 Windows 7 上安装 NET Framework 如果你想让它立即运行 你必须使用
  • 我可以通过添加一个数字来增加迭代器吗?

    我可以使用迭代器进行正常计算 即通过添加数字来增加它吗 举个例子 如果我想删除元素vec 3 我可以这样做吗 std vector
  • 我们如何检查 javaFx 应用程序是否已经在运行?

    有什么方法可以检查我们的 javaFx 应用程序是否已经在运行 如果是 则显示应用程序的现有实例 否则启动新实例 好吧 我确信可能有更好的解决方案 但是当我遇到这个问题时 我只是创建了一个布尔值 一旦启动方法运行 该布尔值就会更改 默认为
  • 如何使用 JSON 从 google API 获取中文罗马拼音

    我想将英语翻译成中文 我已经成功了 但我还需要中文罗马化 即 God 应该翻译为 神 以及 Sh n 我找不到Shen 我怎样才能做到这一点 我只是对 goslate 谷歌翻译器的非官方 API 做了一些小改动 使其能够获得罗马化翻译 并将
  • 如何将 Eclipse 工作区与 TFS 工作区关联?

    我正在使用 Eclipse 版本 11 0 0 的 Team Foundation Server 插件 我有几个 Eclipse 工作区和几个 TFS 工作区 是否可以将 TFS 工作区与 Eclipse 工作区关联 我发现映射本地文件夹不
  • 无法升级pip

    我想安装一些库来学习机器学习 我说我需要升级 pip 但是当我尝试安装它时 pip install upgrade pip Collecting pip Using cached pip 9 0 1 py2 py3 none any whl
  • 更改 ggplot2 中单个面的文本颜色

    我用这些命令创建了下面的图 ggplot long data aes owner value stat summary fun y mean geom bar fill c deepskyblue deepskyblue4 stat sum
  • 了解规范化和重复 - 我想我不知道 - 添加艺术家和标题 ID [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我首先列出了 1958 年至 1980 年期间按日期排列的前 100 首歌曲的表格 对于每个日期 都有 100 条记录 显然 随着歌曲每周位
  • 如何将打印语句保存在列表中?蟒蛇[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何将打印语句保存在列表中 for i in range len values for j in range len values prin
  • 预计会看到“字符数组的初始化字符串太长”警告[重复]

    这个问题在这里已经有答案了 我希望在使用 gcc 的以下程序中看到两个变量的 字符数组的初始化字符串太长 警告 Program int main char str1 4 1234 char str2 3 1234 void str1 Rem