不能在预处理器指令中使用 printf
Not able to use printf in preprocessor directives
我在执行以下代码时出错。谁能解释我犯了什么错误?
#include <iostream>
using namespace std;
#define one 1
#ifdef one
printf("one id defined");
#endif
void func1();
void __attribute__((constructor)) func1();
void func1()
{
printf("before");
}
int main()
{
cout <<"main";
return 0;
}
以下是我遇到的错误。
prog.cpp:5:11: error: expected constructor, destructor, or type conversion before '(' token
printf("one id defined");
^
目前尚不清楚这段代码应该实现什么,请查看扩展代码以了解出了什么问题(对于 gcc-E
(。它将类似于:
#include <iostream>
using namespace std;
printf("one id defined");
void func1();
void __attribute__((constructor)) func1();
void func1()
{
printf("before");
}
int main()
{
cout <<"main";
return 0;
}
但不能在文件范围内调用函数。可能有一个声明/定义,这就是编译器需要构造函数、析构函数或类型转换的原因。
PS:您包括<iostream>
但随后使用printf
。这有点奇怪。printf
在<cstdio>
.
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- C++:对不存在的命名空间使用命名空间指令
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 内联程序集printf将整数解释为地址
- 函数名是c中该函数的第一条指令的地址吗
- 为什么mpfr_printf与十六进制浮点(%a转换说明符)的printf不同
- 错误:无效的预处理指令 #i 的意思是 #if?
- 组装指令中乘法的下部和上部是什么
- C++ Setter/Getter,cout 工作,printf 失败
- OpenMP 与有序和关键指令并行
- C++中的移动分配出现问题.非法指令: 4.
- 嵌套命名空间的"using"指令,但需要命名内部命名空间
- Printf 命令不打印时添加了查找常见除数的新代码
- SIGSEGV, 分段错误. 而 printf() 数组索引的值
- 为什么在包含iostream时可以使用printf()?
- C++CMake编译指令与
- 使用宏扩展的泛型:为什么指令缓存使用不当?
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- 不能在预处理器指令中使用 printf