相关疑难解决方法(0)

什么时候argv [0]有空?

从命令行向main()传递参数我所理解的是argc的最小值为1,而argv [0]将始终具有程序名称及其路径.

如果在命令行提供了参数,那么argc的值将大于1,而argv [argc-1]的argv将具有这些参数.

现在这个链接的一个段落说明了一点

argv [0]将是包含程序名称的字符串,如果不可用,则为空字符串.

现在,argv [0]如何以及何时可以使用空字符串?我的意思是程序名称及其路径将始终可用,所以什么时候它可以为空?

作家说"如果不可用"但是何时以及如何可能无法获得该计划名称?

c argv

32
推荐指数
3
解决办法
1万
查看次数

void*总是与char*具有相同的表示吗?

将一个void*总是有相同的表示为char*

细节:

我想使用一个可变参数函数,它使char*被(char*)0类似的终止:

int variadic(char*, ...); //<-prototype
variadic("foo", "bar", (char*)0); //<- usage
Run Code Online (Sandbox Code Playgroud)

我想,以取代(char*)0NULL,但是从判断 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf的:

66)宏NULL在(和其他头部)中定义为空指针常量; 见7.19.

3值为0的整型常量表达式或类型为void*的表达式称为空指针常量.66)如果将空指针常量转换为指针类型,则保证将结果指针(称为空指针)与指向任何对象或函数的指针进行比较.

我不能,因为在variadic上下文中,我绝对需要char*一个平原0是不可接受的.

如果我定义:

#define NIL (void*)0 /*<= never a plain 0*/
Run Code Online (Sandbox Code Playgroud)

用它来终止我是合法的variadic(char*,...)吗?

c pointers language-lawyer

24
推荐指数
2
解决办法
1465
查看次数

使用argc = 0执行进程

是否可以执行argc = 0的进程?我需要执行一个程序,但它的argc等于0是非常重要的.有没有办法做到这一点?我试图在命令行中放置2 ^ 32个参数,使其看起来好像argc = 0但是参数个数有一个最大限制.

c integer-overflow argv argc

10
推荐指数
2
解决办法
6896
查看次数

正确的定义NULL和NULL_POINTER的方法?

据我所知,C定义NULL如下:

#define NULL ( (void *) 0)
Run Code Online (Sandbox Code Playgroud)

然后,我们应该如何定义NULL_POINTER?我在我的程序中将它定义为相同并且它有效,但我认为这只是一个巧合:

#define NULL_POINTER ( (void *) 0)
Run Code Online (Sandbox Code Playgroud)

如果有的话,逻辑定义是什么?

c null pointers c-preprocessor

8
推荐指数
2
解决办法
2万
查看次数

如何启动带有空 argv 的 Python 程序?

我遇到的问题是,运行程序后,它出错说我的 argv 包含 1 个条目,并且需要将其设置为 0

import subprocess
args = ['/challenge/embryoio_level75']
subprocess.run(args)
Run Code Online (Sandbox Code Playgroud)

python subprocess

1
推荐指数
1
解决办法
714
查看次数

main() 参数 argc 可以小于 1 吗?

cppreference.com上我找到了以下代码示例:

#include <iostream>
#include <string_view>
 
// Print a string surrounded by single quotes, its
// length and whether it is considered empty.
void check_string(std::string_view ref)
{
    std::cout << std::boolalpha
              << "'" << ref << "' has " << ref.size()
              << " character(s); emptiness: " << ref.empty() << '\n';
}
 
int main(int argc, char **argv)
{
    // An empty string
    check_string("");
 
    // Almost always not empty: argv[0]
    if (argc > 0) // <--- is this necessary?
        check_string(argv[0]);
}
Run Code Online (Sandbox Code Playgroud)

argc …

c++

1
推荐指数
1
解决办法
139
查看次数