Per C Standard, J.5.1 [ISO/IEC 9899:2011] main with environment is ok and is supported by all the main platforms.
Test could be something like this:
#include <stdio.h>
int main(int argc, /*const*/ char* argv[], /*const*/ char* envp[])
{
if (argc < 1) {
return 1;
}
for (int i = 0; i < argc; ++i) {
const char* arg = argv[i];
if (!arg) {
return 1; // do not allow nullptr argument
}
for (; *arg; ++arg) { // ensure memory is valid
}
}
for (size_t j = 0; envp[j]; ++j) {
const char* env = envp[j];
if (!env) {
return 1; // do not allow nullptr item
}
for (; *env; ++env) { // ensure memory is valid
}
}
puts("hello from argc argv envp main!");
return 0;
}