我想知道png文件的用法.png图像有两种格式; 一个是png8,另一个是png24.
我想知道如果我在我的html页面中使用任何一种类型,会有任何错误吗?或者这只是质量问题?
我已经在C和C++的上下文中看到了这些,但有符号和无符号变量之间有什么区别?
我想了解下面的程序,但我不清楚.
#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) 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 …
编码菜单有子菜单Encode in utf-8,并Convert to utf-8在记事本++.他们之间有什么区别?
我一直在寻找这个术语"输出符号".导出符号意味着在C/C++中或相对于库(共享/静态)?我们从哪里导出符号以及为什么?导出符号与编译器名称修改的关系是什么?
我在用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进行嵌入式编程时,我发现自己多次使用枚举和数组进行映射,因为它们速度快,内存效率高.
enum {
ID_DOG = 0,
ID_SPIDER,
ID_WORM,
ID_COUNT
};
int const NumberOfEyes[ID_COUNT] = {
2,
8,
0
};
Run Code Online (Sandbox Code Playgroud)
问题是,有时在添加/删除项目时,我会犯错,枚举和数组不同步.如果初始化列表太长,编译器将检测它,但不是其他方式.
那么可靠和可移植的编译时检查初始化列表是否与数组的长度匹配?
背景:
起初有一个文件base.c,该文件位于只有一个分支的存储库中Base.
Base分支制作Extended- 分支.然后,这个新的分支进行了几处更改base.c.
如果在文件base.c中修复了错误Base,它们将合并到Extended.
事实证明,base.c在Extended分支中添加太多东西不是一个好主意,因此文件被复制到ext.c.然后,大多数Extended添加内容将从中删除base.c,并Base从中删除功能ext.c.所以在这一点base.c中Extended是非常相似Base.
问题:
当文件被拆分时,Mercurial被告知ext.c是一份副本base.c,因为他们共享了一个共同的历史.不幸的是,这不是一个好主意.
现在,如果错误是固定的Base分支和合并Extended,水银认为,这些变化应同时适用于base.c和ext.c,即使后者是不再有任何相似之处,前者.这使得合并非常烦人.
有没有办法告诉Mercurial ext.c应该不再被视为相同base.c?一种解决方案是ext.c用新文件替换,但历史不会跟随.
可以说,在许多情况下,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.
我的结论是正确的,还是有一些我失踪的规则?