存档

文章标签 ‘C’

error C2059: syntax error : ‘string’

2010年12月28日 6 条评论

今天在编译驱动代码的时候出现了一个错误,error C2059: syntax error : ‘string’,有点让人误解。网上搜了一下,发现是使用了extern “C”造成的。自己挤出不好吧。只有当在C++里面的时候,引用外部函数才需要extern “C”来声明,否则直接声明函数即可。另外,我们可以方便的通过判断是否定义__cplusplus来使得代码的可移植性更好,可以按照下面的方法来声明函数:

1
2
3
4
5[......]

继续阅读

分类: C语言 标签: , , ,

C语言字符串

2010年9月14日 没有评论

 先看一段代码,看看程序运行后的输出结果是什么:
#include <stdio.h>
#include <string.h>
int main()
{
char s1[] = "Hello";
char s2[] = {'H', 'e', 'l', 'l', 'o', '\0'};
char s3[] = {'H'[......]

继续阅读

分类: C语言 标签: , ,

main函数的正确写法

2010年9月13日 没有评论

国内很多C/C++的教材对main的写法不成体统,大到教授(比如谭XX之类的),小到普通作者(比如那些不负责任混稿费的XX),main的写法很多,事实上main函数的正确写法是没有那么多的。
main函数的正确声明方法只有三个:int main(), int main(void) 或者int main(int argc, char *argv[]) (显然argc 和argv 的拼写可以随便)。
——《你必须知道的495个C语言问题》
实际上,根据C++标准规格,只有两种[......]

继续阅读

分类: C语言 标签: , ,

C语言移位操作

2010年9月13日 没有评论

        在C语言中判断奇偶、乘2、除2等操作都可以使用位移操作方便的实现。比如说判断变量num的奇偶性,只需num&1就可以了,如果结果为1,则num是奇数,否则num是偶数。而乘2可以左移1,除2则是右移1.
        最近在学线段树,第一次写时出了问题,仔细一分析,原来是移位操作的地方出了问题。位移操作的优先级是非常非常低的,比四则[......]

继续阅读

分类: C语言 标签: , ,

C语言没有引用传参

2010年9月13日 没有评论

真的没有。
        严格地讲, C 总是按值传递。你可以自己模拟按引用传递, 定义接受指针的函数, 然后在调用时使用& 操作符。事实上, 当你向函数传入数组(传入指针的情况参见问题6.4 及其它) 时, 编译器本质上就是在模拟按引用传递。但是C 没有任何真正等同于正式的按引用传递或C++ 的引用参数的东西。另一方面, 类似函数的预处理宏可以提供一种“按名称传递”的形式。
摘自《你必须知[......]

继续阅读

分类: C语言 标签: , ,