我有以下代码:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#define initialSize 50
//Public GCC compiler-friendly macros
#define n argv[2]
using namespace std;
struct Point {
int x;
int y;
int z;
};
int smallest(Point* p, int n);
int size = 0, max_size = initialSize;
int *A = new int[max_size];
int main(int argc, char* argv[]) {
int test;
Point* p = new Point();
smallest(p, test);
return 0;
}
int smallest(Point *p, int n) {
return 0;
}
根据我的理解,这应该是C ++的有效语法。但是我得到以下编译错误:
test.cpp:32:20: error: invalid conversion from ‘int’ to ‘int*’ [-fpermissive]
test.cpp:23:5: error: initializing argument 2 of ‘int smallest(Point*, int*)’ [-fpermissive]
我正在使用命令:g++ -std=c++11 test.cpp
编辑:添加了整个源代码而不是代码段。尝试在不同的环境中但遇到相同的编译错误。
答案 0 :(得分:2)
您发布的代码正确编译。
尽量不要使用指针:
int smallest(const Point& p, int value)
{
return 0;
}
int main(void)
{
int test = 15;
Point p;
smallest(p, test);
return EXIT_SUCCESS;
}
答案 1 :(得分:1)
首先:
#define n argv[2]
第二
int smallest(Point* p, int n);
第三
int test;
第四:
smallest(p, test);
我不知道为什么你需要这个定义,但肯定是他造成这种奇怪的行为。