c – 错误:为“构造函数”属性指定的参数数量错误
发布时间:2020-12-16 06:56:51 所属栏目:百科 来源:网络整理
导读:在实际实现之前,我编写了一个小的原型代码,并将类构造函数和ctor构造函数放在同一个文件中,以查看ctor是否先执行,这是我的实际实现. 但是,我正面临一个错误.这是代码: #include stdlib.h#include string.h#include stdio.h#include iostreamusing namespace
在实际实现之前,我编写了一个小的原型代码,并将类构造函数和ctor构造函数放在同一个文件中,以查看ctor是否先执行,这是我的实际实现.
但是,我正面临一个错误.这是代码: #include <stdlib.h> #include <string.h> #include <stdio.h> #include <iostream> using namespace std; extern "C" void startMe(void) __attribute__ ((constructor(1))); extern "C" void ending(void) __attribute__ ((destructor)); class Test { public: Test() { cout << "This is test constructor" << endl; } }; int main() { Test(); printf("Now main calledn"); } void startMe(void) { printf("Start me called before mainn"); } void ending(void) { printf("Destructor calledn"); } – Output: $g++ constructor1.cc constructor1.cc:10: error: wrong number of arguments specified for ‘constructor’ attribute 但是,当我删除构造函数优先级时,它编译并运行正常.也就是说,我这样做: extern "C" void startMe(void) __attribute__ ((constructor)); 为什么会这样?如何优先考虑? 请帮我.我的想法是首先执行“ctor”,然后执行另一个(Test)构造函数.同样的原因,我把ctor作为优先事项1. 解决方法
按原样编译程序会产生:
warning: constructor priorities from 0 to 100 are reserved for the implementation 将优先级从1更改为101可以消除警告并且可执行文件生成: Start me called before main This is test constructor Now main called Destructor called 这是使用GCC 4.5 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |