Tag: 语法

这个’ – >’在c / objective-c中意味着什么?

我正在查看一些代码,我遇到了一些我不知道其含义的语法。 ‘ – >’是什么意思? -(void) getTransformValues:(struct transformValues_*) tv { tv->pos = positionInPixels_; tv->scale.x = scaleX_; tv->scale.y = scaleY_; tv->rotation = rotation_; tv->skew.x = skewX_; tv->skew.y = skewY_; tv->ap = anchorPointInPixels_; tv->visible = visible_; }

C中的解析错误

我正在做一些按位操作的家庭作业,它说我的代码有一个“解析错误”我假设它的语法或其他东西……但我找不到丢失的分号或任何东西。 你能否发现为什么我可能会遇到这个问题? int isGreater(int x, int y) { int xSign = (x>>31); int ySign = (y>>31); int check1 = (xSign & ySign) | (~xSign & ~ySign); int same = ( x + ((~y) + 1) )>>31; same = !(same & 0x1); int check2 = (check1 & same) | (~check1 & !xSign); int equal = (!(x […]

标识符名称中的数字是否有任何问题?

从C \ C ++ \ Java开始 – int 2a ; //invalid suffix “a” on integer constant 虽然它是有效的语法,但是变体名称的其余部分中的数字是否有任何问题? 喜欢 – int num1 ; int num_1st ; int num_2nd ;

MSVC中奇怪的编译器错误

我正在尝试WinFUSE库并得到一个奇怪的编译器错误消息。 #include #include void* fuse_init(struct fuse_conn_info* conn) { printf(“%s(%p)\n”, __FUNCTION__, conn); if (!conn) return NULL; conn->async_read = TRUE; conn->max_write = 128; conn->max_readahead = 128; return conn; } int main(int argc, char** argv) { struct fuse_operations ops = {0}; // Fill the operations structure. ops.init = fuse_init; // REFLINE 1 void* user_data = NULL; // REFLINE […]

野牛警告:键入非终结符号的空规则

我收到一个警告,我对Bison并不是很了解。 warning: empty rule for typed non-terminal, and no action 这是我的每个非终端角色。 我不明白的部分是,如果我不给它们一个类型,那么我得到编译错误,说明所有的$ ns都是未定义的。 这是我的野牛文件的语法部分。 %union { char *sval; } %token PLUS TIMES LPAREN RPAREN ID %type setf %% s : e { cout << GetNonConstCharStar(std::string("(e ") + $1 + ")") << endl; } e : | e PLUS t { $$ = GetNonConstCharStar(std::string("(e ") + […]

为什么’c ‘编译而’c ‘没有?

此示例编译时没有警告/错误(gcc 4.8.2 -Wall): #include int main() { char c; int i; printf(“%p %02x\n”,&i,c[&i]); printf(“%p %02x\n”,&c,c[&c]); // important to note that this line DOESN’T compile: //printf(“%p %02x\n”,&i,c[i]); // which makes sense as c is NOT an array, it is a char. return 1; } 为什么语法c [&i]编译? 是故意还是意外? 语法c [&i]在语义上是否有效? (它有什么有用的意义吗?) 我的输出示例:(指针每次都改变) 0xbfb2577c b7718cea 0xbfb2577b 08 这个问题起源于这里有一个奇怪的代码’ch2 […]

XML的forms语法

我试图在C中为XML文件构建小解析器。我知道,我可以找到一些完成的解决方案但是,我只需要一些基本的东西用于嵌入式项目。 我试图创建语法来描述没有属性的XML,只是标签,但似乎它不起作用,我无法弄清楚原因。 这是语法: XML : FIRST_TAG NIZ NIZ : VAL NIZ | eps VAL : START VAL END | STR | eps 以下是实现此语法的C代码的一部分: void check() { getSymbol(); if( sym == FIRST_LINE ) { niz(); } else { printf(“FIRST_LINE EXPECTED”); exit(1); } } void niz() { getSymbol(); if( sym == ERROR ) return; if( sym == […]

学习makefile

我正在努力学习makefile。 我必须为我的Unix管理/编程类做一个任务,包括为三个文件创建一个makefile:savings.h savings.cpp和savingsTest.cpp。 我的老师并没有真正向我们解释有关makefile的问题。 我查看了我的书,我理解了一般的想法,但我的语法有问题。 我按照我的书的例子,但是我得到了一个错误。 这是我目前为止的makefile代码: savingsTest.0: savingsTest.cpp savings.cpp savings.h cc -c savingsTest.cpp savings.o: savings.cpp savings.h cc -c savings.cpp 这是我得到的错误: cc -c savingsTest.cpp cc: No input file specified, no output generated *** Error code 1 make: Fatal error: Command failed for target `savingsTest’ v245-2% emacs makefile.txt 有人可以帮我理解语法,这样我就可以确定我做错了什么。 感谢任何回应帮助的人。

节点* node1与node * node1的区别是什么?

我有1个节点: struct node { int key; struct node *left, *right; }; 有什么区别 node *node1 VS node* node1 ?

MS VS 2008和C99

我感兴趣地读了一篇文章“支持C99的普遍性如何?”。 其中一条评论指出微软不支持C99。 但注释符号//适用于VS 2008,此符号位于C99中。 我有两个问题: VS 2008在多大程度上支持C99? 在同一代码中将C89和C99语法混合在一起是否可以? 因此,如果我在C89中编写代码然后发表评论//。 这意味着我有混合编码。 那么在这种情况下编译器会做什么呢? 首先用c89检查我的代码,然后用C99检查我是否使用//进行评论?