小编use*_*733的帖子

png8和png24有什么区别

我想知道png文件的用法.png图像有两种格式; 一个是png8,另一个是png24.

我想知道如果我在我的html页面中使用任何一种类型,会有任何错误吗?或者这只是质量问题?

html css png png-8 png-24

63
推荐指数
4
解决办法
11万
查看次数

有符号和无符号变量之间有什么区别?

我已经在C和C++的上下文中看到了这些,但有符号和无符号变量之间有什么区别?

language-agnostic variables unsigned

61
推荐指数
3
解决办法
11万
查看次数

没有sizeof运算符的数组大小

我想了解下面的程序,但我不清楚.

    #include<stdio.h>
    int main()
    {
        int a[]={1,2,3,4,5,6,9};
        printf("sizeof array is %d\n",sizeof(a));
        printf("size of array using logic is %d\n",((&a)[1]-a));
        printf("value of (&a)[1] is %p \n",(&a)[1]);
        printf("value of a is %p \n",a);
        printf("address of a[0] is %p\n",&a[0]);
        printf("address of a[1] is %p\n",&a[1]);
        printf("address of a[2] is %p\n",&a[2]);
        printf("address of a[3] is %p\n",&a[3]);
        printf("address of a[4] is %p\n",&a[4]);
        printf("address of a[5] is %p\n",&a[5]);
        printf("address of a[6] is %p\n",&a[6]);
    }
Run Code Online (Sandbox Code Playgroud)

上面的代码输出是:

    sizeof array is 28
    size of array using logic is 7
    value of …
Run Code Online (Sandbox Code Playgroud)

c arrays

22
推荐指数
3
解决办法
2164
查看次数

在功能结束时跳转到清理时,GOTO被认为是无害的吗?

goto在几个SO讨论中已经对这个声明进行了长时间的讨论(见这个那个),我当然不想重振那些激烈的辩论.

相反,我想专注于gotos 的单个用例并讨论它的价值和可能的替代方案.

请考虑以下代码片段,这在(至少我自己的)FSM中很常见:

while (state = next_state()) {
        switch (state) {
                case foo:
                        /* handle foo, and finally: */
                        if (error) goto cleanup;
                        break;
                case bar:
                        /* handle bar, and finally: */
                        if (error) goto cleanup;
                        break;
                /* ...other cases... */
        }
}

return ok;

cleanup:
/* do some cleanup, i.e. free() local heap requests, adjust global state, and then: */
return error;
Run Code Online (Sandbox Code Playgroud)

在一个单独的函数中交换清理东西只是为了保存gotos似乎很尴尬.另一方面,我们已经被提出来谴责goto尽可能使用s.

我的问题:我的代码示例被认为是好风格吗?
如果没有,是否有可行的替代方案?

请坚持上述具体用法goto …

c coding-style goto

20
推荐指数
4
解决办法
3310
查看次数

在Notepad ++中编码和转换有什么区别?

编码菜单有子菜单Encode in utf-8,并Convert to utf-8在记事本++.他们之间有什么区别?

encoding notepad++ character-encoding

13
推荐指数
1
解决办法
4140
查看次数

导出符号意味着什么?

我一直在寻找这个术语"输出符号".导出符号意味着在C/C++中或相对于库(共享/静态)?我们从哪里导出符号以及为什么?导出符号与编译器名称修改的关系是什么?

c c++ export

10
推荐指数
1
解决办法
4658
查看次数

Const自引用结构

我在用C写作

我已经定义了一个由自引用结构组成的新类型(noFunc_menuEntry).

struct noFunc_menuEntry_tag {
    const char *text;
    struct noFunc_menuEntry_tag *up_entry;
    struct noFunc_menuEntry_tag *down_entry;
    struct noFunc_menuEntry_tag *back_entry;
    struct noFunc_menuEntry_tag *enter_entry;
};
typedef struct noFunc_menuEntry_tag noFunc_menuEntry;
Run Code Online (Sandbox Code Playgroud)

我需要定义一系列变量,如下所示:

menuEntry_1 = {title_1, &menuEntry_2, &menuEntry_4, &menuEntry_1, &menuEntry_5};
menuEntry_2 = {title_2, &menuEntry_3, &menuEntry_1, &menuEntry_1, &menuEntry_6};
Run Code Online (Sandbox Code Playgroud)

等等.

所以我需要分离变量的声明和定义,因为每个变量都依赖于其他变量.在头文件中,我写了声明

noFunc_menuEntry menuEntry_1, menuEntry_2, menuEntry_3, menuEntry_4, menuEntry_5, menuEntry_6;
Run Code Online (Sandbox Code Playgroud)

etc ...,并在函数中的.c文件中初始化变量:

void menu_init(void)
{
        menuEntry_1.text = title;
        menuEntry_1.up_entry = &menuEntry_2
}
Run Code Online (Sandbox Code Playgroud)

等等其他成员和变量.

但是我希望我的变量是const:

const noFunc_menuEntry menuEntry_1, menuEntry_2, menuEntry_3, menuEntry_4, menuEntry_5, menuEntry_6;
Run Code Online (Sandbox Code Playgroud)

所以我的问题是关于separing声明和const我定义的类型变量的定义.我能怎么做?难道我做错了什么?

当然,如果我只是添加const声明,编译器在初始化变量时报告错误(我正在尝试编写只读变量).

c struct const self-reference

8
推荐指数
2
解决办法
249
查看次数

检测不匹配的数组< - >枚举初始值设定项

使用C进行嵌入式编程时,我发现自己多次使用枚举和数组进行映射,因为它们速度快,内存效率高.

enum {
    ID_DOG = 0,
    ID_SPIDER,
    ID_WORM,
    ID_COUNT
};
int const NumberOfEyes[ID_COUNT] = {
    2,
    8,
    0
};
Run Code Online (Sandbox Code Playgroud)

问题是,有时在添加/删除项目时,我会犯错,枚举和数组不同步.如果初始化列表太长,编译器将检测它,但不是其他方式.

那么可靠和可移植的编译时检查初始化列表是否与数组的长度匹配?

c arrays enums initialization

6
推荐指数
2
解决办法
829
查看次数

错误的文件拆分后,在Mercurial中断开文件连接

背景:

起初有一个文件base.c,该文件位于只有一个分支的存储库中Base.

Base分支制作Extended- 分支.然后,这个新的分支进行了几处更改base.c.

如果在文件base.c中修复了错误Base,它们将合并到Extended.

事实证明,base.cExtended分支中添加太多东西不是一个好主意,因此文件被复制到ext.c.然后,大多数Extended添加内容将从中删除base.c,并Base从中删除功能ext.c.所以在这一点base.cExtended是非常相似Base.

问题:

当文件被拆分时,Mercurial被告知ext.c是一份副本base.c,因为他们共享了一个共同的历史.不幸的是,这不是一个好主意.

现在,如果错误是固定的Base分支和合并Extended,水银认为,这些变化应同时适用于base.cext.c,即使后者是不再有任何相似之处,前者.这使得合并非常烦人.

有没有办法告诉Mercurial ext.c应该不再被视为相同base.c?一种解决方案是ext.c用新文件替换,但历史不会跟随.

mercurial

6
推荐指数
1
解决办法
123
查看次数

Misra-C与X-macros兼容吗?

可以说,在许多情况下,X宏增加了安全性,因为例如,更容易确保生成的数组长度相同.


但是,Misra C(来自2004参考)规则似乎有很多限制使用的预处理器规则:

规则19.1(建议)文件中的#include语句应该只有其他预处理程序指令或注释开头.

如果源表位于包含的其他文件中,例如生成数组,则很麻烦.但这是一个咨询规则,因此可以解决.

规则19.4(必需)C宏只能扩展为支撑初始值设定项,常量,字符串文字,带括号的表达式,类型限定符,存储类说明符或do-while-zero结构.

不应该是问题,因为大多数X宏用于生成数组初始化器或常量.

规则19.6(必填)#undef不得使用.

使一些X-macro使用模式变得不可能.不幸的是,但并没有完全阻止X-macros.

规则19.7(建议)应该优先使用函数,而不是像函数一样的宏.

仅限咨询规则.

规则19.12(必需)在单个宏定义中最多只能出现一次#或##预处理器运算符.

可以使用嵌套宏来解决.

规则19.13(建议)不应使用#和##预处理器运算符.

例如,在生成枚举时很麻烦,但这只是一个建议规则.

规则19.15(必需)应采取预防措施,以防止头文件的内容被包含两次.

在某些情况下很麻烦,但可以解决.


看看上面的内容,如果你小心的话,似乎可以使用带有Misra C代码的X-macros.

我的结论是正确的,还是有一些我失踪的规则?

c misra x-macros

6
推荐指数
1
解决办法
296
查看次数