我总是搞砸了怎么用const int*
,const int * const
和int const *
正确的.是否有一套规则来定义您能做什么和不能做什么?
我想知道在任务,传递到职能等方面所做的所有事情和所有不应做的事情.
我最近在C中使用了函数指针.
继续回答你自己的问题的传统,我决定对那些需要快速深入研究这个主题的人进行一些基本的总结.
为什么GCC中的C预处理器将单词linux
(小写字母)解释为常量1
?
test.c的:
#include <stdio.h>
int main(void)
{
int linux = 5;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
结果$ gcc -E test.c
(预处理阶段后停止):
....
int main(void)
{
int 1 = 5;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
哪个 - 当然 - 会产生错误.
(顺便说一句:#define linux
stdio.h文件中没有.)
这个C程序如何工作?
main(_){_^448&&main(-~_);putchar(--_%64?32|-~7[__TIME__-_/8%8][">'txiZ^(~z?"-48]>>";;;====~$::199"[_*2&8|_/64]/(_&2?1:8)%8&1:10);}
Run Code Online (Sandbox Code Playgroud)
它按原样进行编译(测试gcc 4.6.3
).它打印编译时的时间.在我的系统上:
!! !!!!!! !! !!!!!! !! !!!!!!
!! !! !! !! !! !! !! !!
!! !! !! !! !! !! !! !!
!! !!!!!! !! !! !! !! !! !!!!!!
!! !! !! !! !! !! !!
!! !! !! !! !! !! !!
!! !!!!!! !! !! !! !!!!!!
Run Code Online (Sandbox Code Playgroud)
资料来源:sykes2 - 一行中的一个时钟,sykes2作者提示
一些提示:默认情况下没有编译警告.编译时-Wall
,会发出以下警告:
sykes2.c:1:1: warning: return type defaults to ‘int’ [-Wreturn-type]
sykes2.c: In function ‘main’:
sykes2.c:1:14: warning: value …
Run Code Online (Sandbox Code Playgroud) 我知道C中的全局变量有时会有extern
关键字.什么是extern
变量?宣言是什么样的?它的范围是什么?
这与跨源文件共享变量有关,但这是如何工作的?我在哪里用extern
?
我在C中有一个大数组(如果有所不同,则不是C++).我想将所有成员初始化为相同的值.我发誓我曾经知道一个简单的方法来做到这一点.我可以memset()
在我的情况下使用,但是没有办法在C语法中构建这样做吗?
今年夏天,我用直接C编写了一个嵌入式系统.这是我工作的公司接管的现有项目.我已经习惯于使用JUnit在Java中编写单元测试,但是对于为现有代码(需要重构)编写单元测试的最佳方法以及添加到系统中的新代码感到茫然.
有没有办法让单元测试普通的C代码像使用JUnit进行单元测试Java代码一样简单?任何专门针对嵌入式开发(交叉编译到arm-linux平台)的见解都将非常感激.
c ×10
arrays ×2
c++ ×1
c++-faq ×1
const ×1
declaration ×1
definition ×1
embedded ×1
extern ×1
gcc ×1
int ×1
linux ×1
memory ×1
obfuscation ×1
pointers ×1
static ×1
syntax ×1
terminology ×1
testing ×1
unit-testing ×1