node ninja
node ninja

Reputation: 33026

Why won't this C++ program compile?

This is the program I'm trying to compile.

#include <iostream>
#include <string>
#include <vector>
#include <unistd.h>
using namespace std;

vector<string> paramlist;
const char *programname = "abc";

const char **args = new const char* [paramlist.size()+2];   // extra room for program name and sentinel
args [0] = programname;         // by convention, args[0] is program name
for (int j = 0;  j < paramlist.size()+1;  ++j)     // copy args
args [j+1] = paramlist[j] .c_str();

args [paramlist.size()+1] = NULL;  // end of arguments sentinel is NULL

execv (programname, (char **)args);

When I try to compile it I get these error messages:

test.cpp:11: error: expected constructor, destructor, or type conversion before ‘=’ token
test.cpp:12: error: expected unqualified-id before ‘for’
test.cpp:12: error: expected constructor, destructor, or type conversion before ‘<’ token
test.cpp:12: error: expected unqualified-id before ‘++’ token
test.cpp:15: error: array bound is not an integer constant
test.cpp:15: error: expected constructor, destructor, or type conversion before ‘=’ token
test.cpp:17: error: expected constructor, destructor, or type conversion before ‘(’ token

Upvotes: 1

Views: 686

Answers (2)

Brian Kelly
Brian Kelly

Reputation: 19305

Your program contains code but it needs to be contained within a function. Try wrapping all your code after the using namespace std; line with a function like int main. Google for any "Hello world" C++ sample to see an example.

Upvotes: 2

Andrew White
Andrew White

Reputation: 53516

You at least need an int main function.

Upvotes: 6

Related Questions