首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

错误:‘void’前应为'=',‘',';','asm’或'__attribute__‘:弱大小写

这个错误提示是由编译器给出的,意味着在代码中使用了无效的语法或缺少了必要的语法元素。具体来说,这个错误提示表明在void关键字之前缺少了一个等号、单引号、分号、asm关键字或attribute关键字。

解决这个错误的方法取决于具体的代码上下文。以下是一些可能的解决方案:

  1. 检查代码中的语法错误:仔细检查代码,确保没有拼写错误、缺少分号或其他语法错误。特别注意void关键字之前的语法是否正确。
  2. 检查变量或函数声明:如果在void关键字之前应该有一个变量或函数声明,确保声明语句正确并且没有遗漏任何必要的元素。
  3. 检查宏定义:如果在代码中使用了宏定义,确保宏定义的语法正确,并且没有遗漏任何必要的元素。
  4. 检查编译器选项:有时候,错误可能是由于编译器选项设置不正确导致的。检查编译器选项,并确保其与代码的要求相匹配。

总结起来,错误:‘void’前应为'=',‘',';','asm’或'attribute‘:弱大小写是一个编译错误,提示在void关键字之前缺少了必要的语法元素。解决这个错误需要仔细检查代码,确保语法正确,并且没有遗漏任何必要的元素。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS_ __attribute__

语法关键字是__attribute__紧跟2套圆括号,括号内是一个以逗号分隔的属性列表。 __attribute__指令被放在类、函数/变量声明后面。...(函数名变量名),其中一个声明为 weak symbol 时,不会引发重定义错误。...链接器会忽视符号,当其他符号不可用时才会使用。 weakref("target"):声明某个引用为引用,当需要引用的符号不存在也不会链接出错。...意味着使用者应该移除这个方法的使用 obsoleted:第一次被废弃的版本,意味着已经被移除,不能够使用了 unavailable:意味着这个平台不支持使用 message:提供一条文本消息,编译器会在发出相关使用已弃用废弃声明的警告错误时显示该消息...obsoleted: version number // 版本号由3个正整数组成 message message提供一条文本消息,编译器会在发出相关使用已弃用废弃声明的警告错误时显示该消息。

25630

C语言进阶小技巧,符号和引用

第一时间看干货文章 1 __attribute__ 是一个编译器指令,其实是 GNU C 的一种机制,本质是一个编译器的指令,在声明的时候可以提供一些属性,在编译阶段起作用,来做多样化的错误检查和高级优化...总之,__attribute__ 起到了给编译器提供上下文的作用,如果错误的使用 __attribute__ 指令,因为给编译器提供了错误的上下文,由此引起的错误通常很难被发现。...强符号和符号 在同一作用域下不能定义同一个变量函数,很多C语言学习者都理所当然地这么认为。...注意这里是声明而不是定义,既然是引用,那么就是使用其他模块中定义的实体,对于函数而言,我们可以使用这样的写法: __attribute__((weakref)) void func(void); 然后在函数中调用...) void func(void); void main(void) { if(func) { func(); } } 但是在现代的编译系统中,这种写法却是错误

90120
  • 认识目标文件的符号

    我们也可以通过GCC的 __attribute__((weak)) 将强符号修饰为符号。注意,强符号和符号都是针对定义,不是针对符号的引用。...在GCC中,我们可以通过使用 __attribute__((weakref)) 这个扩展关键字来声明对一个外部函数的引用为引用,比如下面这段代码: __attribute__ ((weakref))...void foo(); int main() { foo(); } 我们可以将它编译成一个可执行文件,GCC并不会报链接错误。...一个改进的例子是: __attribute__ ((weakref)) void foo(); int main() { if(foo) foo(); } 这种符号和引用对于库来说十分有用,比如库中定义的符号可以被用户定义的强符号所覆盖... int pthread_create( pthread_t*, const pthread_attr_t*, void* (*)(void*), void*) __attribute

    1.5K40

    符号__attribute__((weak))

    符号是什么? 符号: 若两个两个以上全局符号(函数变量名)名字一样,而其中之一声明为weak symbol(符号),则这些全局符号不会引发重定义错误。...链接器会忽略符号,去使用普通的全局符号来解析所有对这些符号的引用,但当普通的全局符号不可用时,链接器会使用符号。当有函数变量名可能被用户覆盖时,该函数变量名可以声明为一个符号。...所以这个时候,__attribute__((weak)) 派上了用场。...在自己的模块中定义: int __attribute__((weak)) func(......) { return 0; } 将本模块的func转成符号类型,如果遇到强符号类型(即外部模块定义了...func\n"); } weak.c //生成libweak.so #include void real_func() __attribute__((weak)); void real_func

    6.4K30

    GCC中初始化函数是怎样被处理的?

    ))和__attribute__((destructor))的方式能够追加初始函数和终止函数, 这篇文章介绍了GCC内部是怎样实现上述处理的。...这些函数须要在程序“開始”被调用 – 就是说,在main函数被调用。 同一时候,编译一些语言时会生成析构体(也被称为终止例程),它应在程序结束时被调用。...根据不同OS和它的可运行文件格式,crtstuff.c libgcc2.c 会在启动时和退出时遍历这些列表。构造体按列表的逆序被调用,析构体按顺序被调用。...这样的情况下,TARGET_ASM_CONSTRUCTOR 被定义来生成一个类型为’N_SETT’的.stabs入口,參照__CTOR_LIST__, .stabs入口把指向初始化函数代码的void函数地址做为它的值...在这样的情况下,TARGET_HAVE_CTORS_DTORS 是错误的,初始和终止函数简单地通过它们的名称被识别。这个要求在链接阶段的使用一个叫 collect2 的额外程序。

    50910

    一个简单的支持MySQL和SQLite3的DB接口

    * 当前只支持MySQL和SQLite3,也就是参数值只能输入mysql(不区别大小写) * @sql_max 支持的最大SQL语句长度,单位为字节数,不含结尾符 * 如果是支持的DB.../*** * 设置连接的数据库名 * 注意,只有在open()reopen()之前调用才生效 */     virtual void set_db_name(const.../*** * 设置访问DB的字符集 * 注意,只有在open()reopen()之前调用才生效 */     virtual void set_charset(const...,则使用默认的10秒 * 注意,只有在open()reopen()之前调用才生效 */     virtual void set_timeout_seconds(int timeout_seconds...-1, * 如果查询实际返回超过一行记录,抛出CDBException异常,异常的错误码为DB_ERROR_TOO_MANY_ROWS */     virtual void query

    72820

    C语言中的强符号和符号

    符号:未初始化的全局变量所生成的符号。 很多情况下写出的代码会出现链接的错误,符号重定义,这是因为在不同的源文件中定义了同名的全局变量并且都进行了初始化。...,若将a.cb.c中全局变量gdata只初始化一次,则不会出现链接错误,并且会链接成功。...二、强弱符号的使用规则 (1)如果出现多个强符号,最终会出现链接错误即符号的重定义。 (2)如果出现强符号和符号,编译器最终会选择强符号。...源文件是独立进行编译的 //a.c int x;//符号 void func(){ x = 20; //往x的内存上写20,写4个字节 编译阶段就完成的 } //b.c #include<...();//链接的完成选择强符号 printf("x = %d,y = %d\n",x,y); return 0; } 在 gcc中,可以通过__attribute__((weak))来强制定义任何一个符号为符号

    1.5K20

    符号实现 iOS 组件化解耦

    而符号分为符号与强符号,对于 C/C++ 来说,编译器默认函数和已初始化的全局变量为强符号,未初始化的全局变量为符号,可以使用__attribute__ ((weak))定义一个符号,编译器决议符号时有如下规则...比如EAim业务模块,建一个文件EAimRouter.m专门放置相关路由方法: void ERouterGotoEAimController(NSString *name, void(^callBack...为了让符号相关代码统统由EAim业务方来维护,所以有必要额外建立一个 repo,这里叫做EAimMediator.h,仅仅是一个头文件: __attribute__ ((weak)) void ERouterGotoEAimController...(NSString *name, void(^callBack)(void)) { ERouterNotFound(name, callBack, nil); } EAimMediator.h...符号方式比 Protocol 和 Block 优越的地方是不需要注册,编译器会自动的根据前面提到的规则静态 (动态) 决议符号引用的地址。

    1.1K10

    《Objective-C高级编程》温故知新之自动引用计数

    pointer type 'id' to C pointer type 'void *' requires a bridged cast 错误提示了我们,可用bridge,我们修改下代码即可,如下...(__bridge id)p; //void * 转 o 注意:关注下Objective-C 对象与 Core Foundation 对象的互换以及免费桥 (Toll-Free Bridge)的使用...结果未定义,往往导致程序错误,而且难以检测。...顾名思义,它是用于自己持有(retain)对象的函数,但它持有的对象应为返回注册在autoreleasepool中对象的方法,或者是函数的返回值。...注意:_objc_autoreleaseReturnValue函数会检查使用该函数的方法函数调用方的执行命令列表,如果方法函数的调用方在调用了方法函数后紧接着调用_objc_retainAutoreleasedReturnValue

    62050
    领券