Tag: 命名空间

c模块中的命名空间或包

我是初学者级别的程序员,来自高级语言,感觉像c是扁平结构。 有没有一种模拟包的方法,所以我可以有一个干净的命名空间,而不需要前缀。 嵌套结构是我正在看的。 它是如何与第三方外部库一起工作的,当名称冲突时会发生什么,或者它是如何分开的。 如果我要构建一个库或一个与libs链接的多模块应用程序,那么每个模块可以有一个与另一个模块相同的变量,函数或结构名称。 此外,如果您链​​接两个名称冲突的第三方库(.a文件等),您如何解决此类冲突。

有什么方法来模块化C代码?

您知道在项目规模扩大时模块化C代码有哪些方法,实践和约定?

C中的非ASCII字符

我正在查看谷歌go的运行时源代码(在https://go.googlecode.com/hg/src/pkg/runtime/ ),似乎他们使用特殊字符作为其function名称,·。 (例如, 请访问https://go.googlecode.com/hg/src/pkg/runtime/cgocall.c )。 这是否被主要编译器接受? 它不是ANSI C,是吗? 或者它只是一些宏观魔法? 谢谢!

结构成员标识符放在什么范围内?

C规范说 范围有四种:函数,文件,块和函数原型。 现在,如果我在任何function之外执行以下操作 struct A { int x; }; 我的理解是标识符x在文件范围内可见。 我们使用命名空间语法来访问该成员,正如规范所述 每个结构或联合为其成员都有一个单独的名称空间(通过。或 – >运算符用于访问该成员的表达式的类型消除歧义) 让我们通过添加一个函数来使它更清晰 struct A { int x; }; void f(void) { int i; } 然后参与此程序表示的标识符,范围和名称空间(N / A“不适用”): file scope ========================================== Ordinary | Members A | Tags | Labels —————————————— f | x | A | N/A | | | function scope of […]

名称空间和xpath的libxml2错误

我在这里粘贴一些代码,使用gcc file.c -lxml2编译没有警告,假设你的系统中安装了libxml2。 #include #include #include #include #include xmlDocPtr getdoc (char *docname) { xmlDocPtr doc; doc = xmlParseFile(docname); if (doc == NULL ) { fprintf(stderr,”Document not parsed successfully. \n”); return NULL; } return doc; } xmlXPathObjectPtr getnodeset (xmlDocPtr doc, xmlChar *xpath){ xmlXPathContextPtr context; xmlXPathObjectPtr result; context = xmlXPathNewContext(doc); if (context == NULL) { printf(“Error in […]